我曾经使用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
也许有用的在线检查PEP8: http://pep8online.com/
import sys
filename = sys.argv[1]
source = open(filename, 'r').read() + '\n'
compile(source, filename, 'exec')
保存为checker.py并运行python checker.py yourpyfile.py。
下面是另一个解决方案,使用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)
多亏了上面的答案@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
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if