在 Python 中,subprocess
模块提供了一个方便的方法来调用外部程序并与之交互。subprocess.call()
函数用于调用外部程序,并等待其完成。如果要在调用外部程序时使用文件,可以使用 subprocess.Popen()
函数,它提供了更多的选项来处理输入和输出。
以下是一个使用 subprocess.Popen()
函数处理文件的示例:
import subprocess
# 创建一个 Popen 对象,并指定要运行的命令
# 同时,将 stdin 和 stdout 设置为管道,以便与外部程序进行通信
p = subprocess.Popen(["cat"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# 将要传递给外部程序的数据写入 stdin
data = "This is some data to be processed by the external program."
p.stdin.write(data.encode())
# 关闭 stdin,以便外部程序知道输入已完成
p.stdin.close()
# 读取来自外部程序的输出
output = p.stdout.read()
# 等待外部程序完成
p.wait()
# 输出结果
print("Output from external program:", output.decode())
在这个示例中,我们使用 subprocess.Popen()
函数运行 cat
命令,并将其输入和输出设置为管道。然后,我们将要传递给外部程序的数据写入 stdin
,并在完成后关闭它。最后,我们读取来自外部程序的输出,并等待其完成。
请注意,这个示例中的数据是一个字符串,但是在实际应用中,可能需要处理二进制数据。在这种情况下,可以使用 subprocess.PIPE
以外的选项来指定输入和输出的文件描述符。
领取专属 10元无门槛券
手把手带您无忧上云