Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
python命令行参数中的多行脚本_Python - Fatal编程技术网

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

python命令行参数中的多行脚本,python,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返回时出错的事

我正在尝试从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返回时出错的事实?
最受欢迎的解决方案是不需要额外的脚本或其他文件:)

shell中的字符串可以包含嵌入的换行符:

python -c 'from module import func
try:
  func()
except ValueError:
  pass
'
请注意,如果要运行的Python包含引号,这将带来一个挑战,这将需要一些扭曲以确保它们都正确转义。在这种情况下,here文档比
-c
选项更合适(尽管如果要运行的代码需要从标准输入中读取,这也会带来问题)


python您还可以输入要交互执行的脚本,如下所示:

$ cat -- | python
<code here>
<code here>
<code here>
<press Ctrl-D>
$cat--| python



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
~$cat--| python
从模块导入函数
尝试:
func()
除值错误外:
通过
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为module的模块

事实上,这是可行的。让我觉得有点傻。。。嗯+1:)这不是我需要的,但仍然很有趣。我已将示例更改为您的代码;也许这就是你需要的。猫是不必要的。您可以使用
python@kojiro:true,但它并不短,因此反向逻辑也适用。在99.9%的情况下,这很重要。这不是关于
try/except
,而是关于一般的多行;更正标题:)你当然是对的。谢谢你的编辑。
~$ 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