num*_*623 5 python subprocess capture python-3.x
我想让我的 Python 脚本运行 Linux shell 命令并将输出存储在变量中,而不向用户显示命令的输出。我已经尝试过这个os.system,subprocess.check_outputsubprocess.run但subprocess.Popen没有os.popen运气
我当前的方法正在运行os.system("ls -l &> /tmp/test_file"),因此命令 stdout 和 stderr 通过管道传输到/tmp/test_file,然后我让我的 Python 代码将文件读取到变量中,然后将其删除。
有没有更好的方法来做到这一点,以便我可以将命令输出直接发送到变量中,而不必创建和删除文件,但对用户隐藏它?
您可以使用该subprocess.run功能。
@Ashley Kleynhans 所说的一项更新
“stdout 和 stderr 的结果是字节对象,因此如果您想将它们作为字符串处理,则需要对它们进行解码”
为此,您不需要 decodestdout 或 stderr,因为在run方法中您可以再传递一个参数来获取字符串形式的返回数据,即text=True
“如果使用,它必须是字节序列,或者如果指定了编码或错误或文本为真,则必须是字符串” -来自文档
from subprocess import run
data = run("ANY COMMAND HERE", capture_output=True, shell=True, text=True)
print(data.stdout) # If you want you can save it to a variable
print(data.stderr) # ^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11783 次 |
| 最近记录: |