将shell命令的输出保存到文本文件中的Python代码

4
我希望通过Python将shell命令的输出保存到文本文件中。这是我的实际而基本的Python代码: 编辑:下面是最终脚本,感谢您的帮助 :)
import subprocess

ip_adress_4 = 0    
pr = open("pointer_record.txt", "w")

while (ip_adress_4 < 255):
    ip_adress_4 = ip_adress_4 + 1
    ip_adress = '82.198.205.%d' % (ip_adress_4,)
    subprocess.Popen("host %s" % ip_adress, stdout=pr, shell=True)

我想指出subprocess文档在之前帮助了我使其工作。它们写得很好,值得你花时间去阅读。http://docs.python.org/2.7/library/subprocess.html?highlight=subprocess#subprocess - invert
2个回答

14

试试这样:

import subprocess
file_ = open("ouput.txt", "w")
subprocess.Popen("ls", stdout=file_)

编辑:满足您的需求

import subprocess

file_ = open("ouput.txt", "w")
subprocess.Popen(["host", ipAddress], stdout=file_)

2
使用 subprocess.check_output 替代 Popen,这会返回一个包含输出内容的字符串,你可以将其写入文件中。

Popen也允许您获取输出。甚至可以直接输出到您已打开的文件中。 - Raydel Miranda
正如其名称所示,“check_output”将检查命令是否成功。这通常是您想要的,但许多命令(例如“diff”或“grep”)即使命令执行了您请求的工作,也会发出错误信号--当存在差异时,“diff”返回非零值(因此基本上总是在做有用的事情时);如果没有匹配项,“grep”将失败。您需要了解何时这很重要;这里有太多问题是来自盲目遵循此建议的人,然后不知道如何应对后果。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接