您的位置:首页 > 财经 > 产业 > python中subprocess的使用小结

python中subprocess的使用小结

2024/10/6 8:26:59 来源:https://blog.csdn.net/MarkAustralia/article/details/139960076  浏览:    关键词:python中subprocess的使用小结

Subprocess 模块是 Python 的标准库中的一部分,它允许与外部进程进行交互。
对于执行系统命令、调用其他可执行文件、处理数据流以及与其他进程通信非常有用。无论是需要执行简单的命令还是需要与复杂的外部程序进行交互,subprocess都可以胜任。

import subprocess
# subprocess.run()接受一个包含命令及其参数的列表,通过stdout=subprocess.PIPE参数捕获标准输出,
# 并使用text=True参数指定输出为文本。最后,我们打印了result.stdout以获取ls -l命令的输出。
result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, text=True)
print(result.stdout)# subprocess.Popen()提供了更多的灵活性,允许与进程进行交互,而不仅仅是等待它完成。
# subprocess.Popen()来启动进程,并指定stdout=subprocess.PIPE和stderr=subprocess.PIPE以捕获标准输出和标准错误。
# 使用process.communicate()方法来等待进程完成并获取其输出。
process = subprocess.Popen(["ls", "-l"],stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True, cwd="/path/to/directory")  # 执行命令, cwd指定执行命令的路径
out, err = process.communicate()  # 读取标准输出和错误# 传入参数
file_name = "file.txt"
result = subprocess.run(["cat", file_name], stdout=subprocess.PIPE, text=True)# 标准输入,使用input_data将数据传递给grep命令的标准输入,并搜索包含"subprocess"的行。
input_data = "Hello, subprocess!"
result = subprocess.run(["grep", "subprocess"], input=input_data, stdout=subprocess.PIPE, text=True)# 标准输出,
output_file = open("output.txt", "w")
result = subprocess.run(["ls", "-l"], stdout=output_file, text=True)  # 将ls -l命令的标准输出重定向到一个名为output.txt的文件。
output_file.close()# 检查返回码
result = subprocess.run(['ls', '/nonexistcontent'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if result.returncode != 0:  # 检查result.returncode是否为0,如果不是,就表示命令执行失败。print(f"命令执行失败,标准错误:{result.stderr}")# 创建管道,将一个命令的输出连接到另一个命令的输入
process_1 = subprocess.Popen(["ls", "/path/to/directory"], stdout=subprocess.PIPE, text=True)
process_2 = subprocess.Popen(["grep", "search_term"], stdin=process_1.stdout, stdout=subprocess.PIPE, text=True)
r = process_2.communicate()[0]
print(r)# 执行shell命令
result = subprocess.run("ls - l | grep .txt", shell=True, stdout=subprocess.PIPE, text=True)
print(result.stdout)  # 使用Shell来执行ls -l | grep .txt命令.

参考:

一文详解Python中subprocess模块的用法_python_脚本之家 (jb51.net)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com