Python命令行参数中的多行脚本
我正在尝试在Arch Linux的PKGBUILD脚本中调用Python:
python -c "from module import func; func()"
这个func
会抛出一个异常,这是预期的行为,但这导致脚本失败。像这样捕获异常并没有效果:
python -c "from module import func; try: func(); except ValueError: pass"
看起来没有办法把try/except语句写成一行(Python:一行中的try语句)。
有没有其他方法可以忽略这个异常,或者说Python返回了一个错误?如果能找到不需要额外脚本或其他文件的解决方案,那就太好了 :)
2 个回答
0
你也可以像这样输入要执行的脚本:
$ cat -- | python
<code here>
<code here>
<code here>
<press Ctrl-D>
然后Python会运行你输入的内容,比如:
~$ cat -- | python
from module import func
try:
func()
except ValueError:
pass
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named module
3
在shell中,字符串可以包含换行符:
python -c 'from module import func
try:
func()
except ValueError:
pass
'
需要注意的是,如果要运行的Python代码中包含了不同类型的引号,这就会比较麻烦,因为你需要做一些复杂的处理来确保所有的引号都能正确地转义。在这种情况下,使用“这里文档”会比使用-c
选项更合适(不过这也会带来一些问题,比如如果要运行的代码需要从标准输入读取数据)。
python << EOF
from module import func
try:
func()
except ValueError:
pass
EOF