Como fazer isso em menos pressionamentos de tecla?

0

Meu programa é escrito em python e eu uso pythontidy e reindent para limpá-lo. No entanto, eu gostaria de um método mais eficiente do que renomear o arquivo, devo apenas olhar para o doc para saber como agora ser forçado a renomear arquivos e fazer pythontidy se comportar mais como reindent ou seja, permitir que ele seja executado em todos os arquivos em um diretório apenas executando-o:

$ python ./PythonTidy-1.20.py mai 
mailman.py   main.old.py  main.py      main.py.bak  main.pyc     
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ python ./PythonTidy-1.20.py main.py main.tidy.py
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ python ./PythonTidy-1.20.py i18n.py i18n.tidy.py
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ mv i18n.tidy.py i18n.py
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ mv main.tidy.py main.py
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ python ./reindent .
python: can't open file './reindent': [Errno 2] No such file or directory
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ python ./reindent.py .
reindented ./appengine_config.py 
reindented ./i18n.py 
reindented ./main.py 
reindented ./util.py 
reindented ./facebookapi.py 
reindented ./br.py 
reindented ./PythonTidy-1.20.py 
reindented ./in.old.py 
reindented ./login_required.py 
ubuntu@ubuntu:/media/Lexar/montao/montaoproject$ 
    
por Niklas Rosencrantz 01.10.2011 / 10:15

1 resposta

1

Eu pessoalmente usaria um script Python (ou shell, perl, etc.) para fazer isso. Você poderia usar um comando find e fazer algumas coisas para cada arquivo .py encontrado, mas para mim isso está se aproximando da linha (3 comandos; reindent, pythontidy, mv,) onde eu iria escrever um script ao invés de tentar obter um complexo comando certo. Eu acho que seria isso, mas não tentei:

find . -name '*.py' -exec python reindent.py {} \; \
 -exec python PythonTidy-1.20.py {} > temp \; -exec mv temp {} \;

Os documentos do PythonTidy dizem - bem, não consigo encontrar nenhum.

O código do PythonTidy faz com que pareça que essa arrumação no local não é uma opção. Aparentemente, o script permite a saída para stdout (e ler a entrada de stdin). Então, meu primeiro pensamento foi que poderíamos executá-lo assim:

# Don't use this!!!
% python PythonTidy.py testfile.py > testfile.py

Se esta é uma boa ideia ou não, depende da implementação do PythonTidy; se ler todo o arquivo antes de abrir a saída, tudo bem. Mas isso não acontece, é uma má idéia.

    
por 01.10.2011 / 17:39

Tags