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


当前回答

下面是另一个解决方案,使用ast模块:

python -c "import ast; ast.parse(open('programfile').read())"

要在Python脚本中干净地执行:

import ast, traceback

filename = 'programfile'
with open(filename) as f:
    source = f.read()
valid = True
try:
    ast.parse(source)
except SyntaxError:
    valid = False
    traceback.print_exc()  # Remove to silence any errros
print(valid)

其他回答

你可以使用这些工具:

PyChecker Pyflakes Pylint

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

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

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

python -m py_compile script.py

也许有用的在线检查PEP8: http://pep8online.com/

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

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

安装和使用:

$ pip install pyflakes
$ pyflakes yourPyFile.py