为什么我的subprocess.call(command)代码没有将任何内容写入txt输出文件?

时间:2019-03-30 05:53:24

标签: python-3.x subprocess

我试图使用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”文件,但其中没有任何内容。

1 个答案:

答案 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()