我曾经使用perl -c programfile来检查perl程序的语法,然后退出而不执行它。对于Python脚本,是否有等效的方法来做到这一点?


当前回答

你可以通过编译来检查语法:

python -m py_compile script.py

其他回答

import sys
filename = sys.argv[1]
source = open(filename, 'r').read() + '\n'
compile(source, filename, 'exec')

保存为checker.py并运行python checker.py yourpyfile.py。

多亏了上面的答案@Rosh Oxymoron。我改进了脚本,以扫描一个目录下的所有python文件。对于我们这些懒惰的人来说,只要给它目录它就会扫描该目录中所有python文件。你可以指定任何你喜欢的文件分机。

import sys
import glob, os

os.chdir(sys.argv[1])
for file in glob.glob("*.py"):
    source = open(file, 'r').read() + '\n'
    compile(source, file, 'exec')

保存为checker.py并运行python checker.py ~/YOURDirectoryTOCHECK

你可以通过编译来检查语法:

python -m py_compile script.py

你可以使用这些工具:

PyChecker Pyflakes Pylint

Pyflakes会做你想做的,它只是检查语法。从文档中可以看出:

Pyflakes做出了一个简单的承诺:它永远不会抱怨风格,并且会非常非常努力地避免出现误报。 Pyflakes也比Pylint或Pychecker快。这主要是因为Pyflakes只单独检查每个文件的语法树。

安装和使用:

$ pip install pyflakes
$ pyflakes yourPyFile.py