Dre*_*mor 21 scripting bash python
如何sudo apt update
从 python 脚本启动带有多个参数(例如“ ”)的 bash 命令?
Ant*_*hon 22
@milne 的回答有效,但subprocess.call()
给你的反馈很少。
我更喜欢使用,subprocess.check_output()
以便您可以分析打印到 stdout 的内容:
import subprocess
res = subprocess.check_output(["sudo", "apt", "update"])
for line in res.splitlines():
# process the output line by line
Run Code Online (Sandbox Code Playgroud)
check_output
在调用命令的零退出时引发错误
请注意,bash
如果您没有shell
为函数指定关键字参数,则这不会调用或其他 shell (对于 也是如此subprocess.call()
,如果没有必要,您不应该这样做,因为它会带来安全隐患),它会直接调用命令。
如果您发现自己在 Python 中执行了很多(不同的)命令调用,您可能需要查看plumbum。有了它,您可以使(IMO)更具可读性:
from plumbum.cmd import sudo, apt, echo, cut
res = sudo[apt["update"]]()
chain = echo["hello"] | cut["-c", "2-"]
chain()
Run Code Online (Sandbox Code Playgroud)
小智 12
您可以将 bash 用作程序,并使用参数 -c 来执行命令:
例子:
bashCommand = "sudo apt update"
output = subprocess.check_output(['bash','-c', bashCommand])
Run Code Online (Sandbox Code Playgroud)
该子模块的设计要做到这一点:
import subprocess
subprocess.call(["sudo", "apt", "update"])
Run Code Online (Sandbox Code Playgroud)
如果您希望脚本在命令失败时终止,您可以考虑使用check_call()
而不是自己解析返回码:
subprocess.check_call(["sudo", "apt", "update"])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
154194 次 |
最近记录: |