我正在尝试从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 statement in a single line)。
是否有另一种方法可以忽略异常或python返回错误的事实? 我们非常欢迎不需要额外脚本或其他文件的解决方案:)
答案 0 :(得分:2)
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
答案 1 :(得分: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