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


当前回答

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

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

其他回答

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

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

你可以使用这些工具:

PyChecker Pyflakes Pylint

下面是另一个解决方案,使用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)

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

python -m py_compile script.py

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