Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-如何捕获Python3语法错误_Python_Bash_Python 3.x - Fatal编程技术网

Bash-如何捕获Python3语法错误

Bash-如何捕获Python3语法错误,python,bash,python-3.x,Python,Bash,Python 3.x,我有一个无头的硬件,可以远程更新 硬件只在引导时运行python脚本。 我正在努力提高这个更新系统的健壮性 如果我要用一个有缺陷的python脚本更新硬件(例如拼写错误的print或return(这种情况经常发生!)或缺少冒号),那么python解释器会拒绝运行它,因为它会先解析整个脚本 在这个“解析”中,它将返回一个语法错误。我怎样才能捕捉到这一点并执行不同的操作?您可以使用execfile制作一个包装器脚本来捕捉SyntaxError,如: try: execfile('/path/t

我有一个无头的硬件,可以远程更新

硬件只在引导时运行python脚本。 我正在努力提高这个更新系统的健壮性

如果我要用一个有缺陷的python脚本更新硬件(例如拼写错误的
print
return
(这种情况经常发生!)或缺少冒号),那么python解释器会拒绝运行它,因为它会先解析整个脚本


在这个“解析”中,它将返回一个语法错误。我怎样才能捕捉到这一点并执行不同的操作?

您可以使用
execfile
制作一个包装器脚本来捕捉
SyntaxError
,如:

try:
   execfile('/path/to/script.py')
except SyntaxError:
   # do the other thing

您可以执行
python foo.py 2>&1|grep“SyntaxError:
(因为返回代码在这方面对您没有帮助:它是1,语法无效),依赖
grep
返回代码,依赖
PIPESTATUS
脚本返回代码我建议使用python linter(pep8)因此,您可以始终确保没有语法错误。您还可以尝试编译代码()并为代码编写测试,从修复部署过程开始,不要浪费时间来解决其缺陷。