- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要运行的 shell 命令,它不返回任何内容:
echo helloWorld | grep 'dummy'
<小时/>
铅锤版本:
以下行有效:
out=(echo["helloWorld"] | grep["h"])().strip()
<小时/>
但是下面一行却没有,可能是什么原因?
out=(echo["helloWorld"] | grep["dummy"])().strip()
print(out)
我遇到的错误:
Traceback (most recent call last):
File "dd.py", line 6, in <module>
out=(echo["helloWorld"] | grep["dummy"])().strip()
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/base.py", line 103, in __call__
return self.run(args, **kwargs)[1]
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/base.py", line 240, in run
return p.run()
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/base.py", line 201, in runner
return run_proc(p, retcode, timeout)
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/processes.py", line 232, in run_proc
return _check_process(proc, retcode, timeout, stdout, stderr)
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/processes.py", line 23, in _check_process
proc.verify(retcode, timeout, stdout, stderr)
File "/home/user/venv/lib/python3.5/site-packages/plumbum/commands/base.py", line 412, in verify
dstproc_verify(retcode, timeout, stdout, stderr)
File "/home/user/venv/lib/python3.5/site-packages/plumbum/machines/base.py", line 26, in verify
stderr)
plumbum.commands.processes.ProcessExecutionError: Command line: ['/bin/grep', 'dummy']
Exit code: 1
[问]如何修复此错误?
最佳答案
发生这种情况是因为,如果 grep 没有找到任何内容,则退出状态为 1,如 its manual 中所述。
如果您愿意,您可以在命令行中尝试:
echo helloWorld | grep h; echo $?
echo helloWorld | grep x; echo $?
将会导致
helloWorld
0
1
另一个 nice answer 中描述了规避此问题的方法,例如
echo helloWorld | grep x | cat
将产生 0 作为状态。但不幸的是,plumbum 采用了本地管道机制,因此 grep 输出会发送到plumbum,然后plumbum 将其传递到下一个命令 - 这意味着 cat 无法吞下退出代码 1,在它之前会抛出异常。
所以我的两个想法是创建一个 shell 脚本来运行 grep 在没有结果的搜索中永远不会返回错误:
#!/bin/bash
grep "$@" || test $? = 1
并执行此命令而不是 grep (在原始答案中称为 c1grep),或者在管道代码周围添加 try/except block 并手动处理退出代码 1 (ProcessExecutionError)。
关于python - plumbum.commands.processes.ProcessExecutionError : for commands which return null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128914/
我正在使用 plumbum python 库 (http://plumbum.readthedocs.org/) 作为 shell 脚本的替代品。 有一个我想运行的命令,当它失败时它会输出我感兴趣的文
我正在使用 Plumbum在 Python 的前台运行命令行实用程序。如果你有一个命令 foo x y z,你可以像这样从 Plumbum 运行它: from plumbum import cmd,
有没有一种好的内置方法可以通过“跳转主机”与 Plumbum 连接。 我考虑过对 ParamikoMachine 进行子类化以提供我自己的 SSHClient 对象。 还有其他想法吗? 最佳答案 尝试
假设我想使用 plumbum 运行类似 ls a* 的程序. from plumbum.cmd import ls ls['a*']() ... ProcessExecutionError: Comm
用于本地/远程命令执行的 Fabric 和 Plumbum python 库的优缺点是什么?当一个库应该被使用而另一个不是时,有哪些用例?应注意哪些差异? 最佳答案 背景和建议的比较方法 (糟糕,这是
我想要运行的 shell 命令,它不返回任何内容: echo helloWorld | grep 'dummy' 铅锤版本: 以下行有效: out=(echo["helloWorld"] | gre
我正在使用 Python 2.7 和来自 mac ports 的最新的 plumbum 包。 一般来说,铅效果很好。尽管我很难让 sudo 命令发挥作用。我已经为我想要运行的命令设置了/etc/sud
我是一名优秀的程序员,十分优秀!