python命令行参数中的多行脚本

时间:2014-04-25 14:13:15

标签: 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 statement in a single line)。

是否有另一种方法可以忽略异常或python返回错误的事实? 我们非常欢迎不需要额外脚本或其他文件的解决方案:)

2 个答案:

答案 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