我曾经使用perl -c programfile来检查perl程序的语法,然后退出而不执行它。对于Python脚本,是否有等效的方法来做到这一点?
当前回答
你可以通过编译来检查语法:
python -m py_compile script.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
Pyflakes会做你想做的,它只是检查语法。从文档中可以看出:
Pyflakes做出了一个简单的承诺:它永远不会抱怨风格,并且会非常非常努力地避免出现误报。 Pyflakes也比Pylint或Pychecker快。这主要是因为Pyflakes只单独检查每个文件的语法树。
安装和使用:
$ pip install pyflakes
$ pyflakes yourPyFile.py
出于某种原因(我是一个py新手…)-m调用没有工作…
这里有一个bash包装器函数…
# ---------------------------------------------------------
# check the python synax for all the *.py files under the
# <<product_version_dir/sfw/python
# ---------------------------------------------------------
doCheckPythonSyntax(){
doLog "DEBUG START doCheckPythonSyntax"
test -z "$sleep_interval" || sleep "$sleep_interval"
cd $product_version_dir/sfw/python
# python3 -m compileall "$product_version_dir/sfw/python"
# foreach *.py file ...
while read -r f ; do \
py_name_ext=$(basename $f)
py_name=${py_name_ext%.*}
doLog "python3 -c \"import $py_name\""
# doLog "python3 -m py_compile $f"
python3 -c "import $py_name"
# python3 -m py_compile "$f"
test $! -ne 0 && sleep 5
done < <(find "$product_version_dir/sfw/python" -type f -name "*.py")
doLog "DEBUG STOP doCheckPythonSyntax"
}
# eof func doCheckPythonSyntax
也许有用的在线检查PEP8: http://pep8online.com/
你可以通过编译来检查语法:
python -m py_compile script.py
推荐文章
- 数据类vs类型。NamedTuple主要用例
- 如何从macOS完全卸载蟒蛇
- 是否有可能键入提示一个lambda函数?
- 'dict'对象没有has_key属性
- 使用Pandas groupby连接来自几行的字符串
- Pandas:给定列的数据帧行之和
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 如何激活蟒蛇环境
- 省略[…]意思是在一个列表里?
- 为什么我得到“'str'对象没有属性'读取'”当尝试使用' json。载入字符串?
- 不区分大小写的列表排序,没有降低结果?
- 排序后的语法(key=lambda:…)
- 在烧瓶中返回HTTP状态代码201
- 使用python创建一个简单的XML文件
- APT命令行界面式的yes/no输入?