如何用更少的击键次数来实现这一点?

如何用更少的击键次数来实现这一点?

我的程序是用 python 编写的,我使用 pythontidy 和 reindent 来清理它。但是我想要一种比重命名文件更有效的方法,我是否应该查看文档以了解如何强制重命名文件并使 pythontidy 的行为更像 reindent,即只需运行它即可使其在目录中的所有文件上运行:

$ 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$ 

答案1

我个人会使用 Python(或 shell、perl 等)脚本来执行此操作。您可以使用 find 命令并对找到的每个 .py 文件执行一些操作,但对我来说,这接近于行(3 个命令;reindent、pythontidy、mv),我会在其中编写脚本而不是尝试正确执行如此复杂的命令。我猜应该是这个,但我还没有尝试过:

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

PythonTidy 的文档说 - 嗯,我找不到任何。

PythonTidy 的代码让这种就地整理看起来不是一种选择。显然,该脚本允许您输出到 stdout(并从 stdin 读取输入)。所以我的第一个想法是,我们可以像这样执行它:

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

这是否是个好主意取决于 PythonTidy 的实现;如果它在打开输出之前读入整个文件,那就没问题了。但是它没有,所以是个坏主意。

相关内容