python中保存文件的命令_如何将操作系统命令输出保存在文本文件中?

欢迎来到Stackoverflow。在

这里的主要问题是os.system不是为了从命令中产生输出而设计的——它只是运行它,进程将其输出发送到它从其父(您的程序)继承的任何东西。在

要捕获输出,最简单的方法是使用subprocess模块,它允许您捕获进程的输出。在

下面是一个非常简单的程序,可以让您开始:import subprocess

target = 'google.com'

ping_it = subprocess.Popen('ping ' + target,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

out, err = ping_it.communicate()

with open("Output.txt", "w+") as fo:

fo.write(str(out))

fo.close()

如果您希望在生成输出时读取输出,而不是等待子进程终止,则可以使用单个subprocess.PIPE通道并从中读取,这可以方便地用如下形式表示:

^{pr2}$

在本例中,我选择将命令作为参数列表而不是简单的字符串。这就避免了如果参数已经是列表形式的话就必须将它们连接到字符串中。在

请注意,当以这种方式与子进程交互时,子进程可能处于阻塞状态,因为stdout或stderr已填满其输出缓冲区空间。如果您的程序随后试图从另一个通道读取数据,这将导致死锁,其中每个进程都在等待另一个进程执行某些操作。为了避免这种情况,可以将stderr设为临时文件,然后在子进程完成后验证该文件是否不包含任何重要内容(理想情况下,将其删除)。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值