我试图使用Python 3的子进程模块来调用命令(即netstat -ano > output.txt
),但是当我运行脚本时,会创建输出文件,但是没有写任何东西,换句话说,它只是空白。
我尝试研究有关subprocess.call()
方法如何工作的子流程模块API,并在Google中寻找解决方案。我尝试使用subprocess.check_output()
方法,但它以未格式化的字符串形式打印出来,而不是通常在Windows命令提示符下输入netstat -ano
的类似列的格式。
这是我当前的代码:
import subprocess as sp
t = open('output.txt', 'w')
command = 'netstat -ano > output.txt'
cmd = command.split(' ')
sp.call(cmd) # sp.call(['netstat', '-ano', '>', 'output.txt'])
t.close()
我认为可能是因为我没有使用write()
方法。但是当我将代码更改为
t.write(sp.call(cmd))
我会得到这样的错误:write()
方法期望输入字符串,但是接收到一个整数。
我希望输出给我在打开命令提示符(在Windows 10中)并键入netstat -ano > output.txt
时通常会看到的内容,这通常会生成一个名为“ output.txt”的文件,并具有我的netstat命令的输出。
但是,当我在当前脚本中运行该命令时,它会创建“ output.txt”文件,但其中没有任何内容。
答案 0 :(得分:0)
如果仅将cmd
转换为str
之类的t.write(str(cmd))
,它将写入到output.txt
import subprocess as sp
t = open('output.txt', 'w')
command = 'netstat -ano > output.txt'
cmd = command.split(' ')
t.write(str(cmd))
sp.call(cmd) # sp.call(['netstat', '-ano', '>', 'output.txt'])
t.close()