我正在尝试使用Python 3的子进程模块来调用命令(即netstat -ano > output.txt
),但是当我运行脚本时,输出文件被创建,但没有任何内容被写入其中,换句话说,它只是空白。
我已经尝试查看子进程模块API,了解subprocess.call()
方法的工作原理,并在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()
方法期望字符串输入但收到int的错误。
我希望输出能够给出我通常会看到的内容,如果我打开命令提示符(在Windows 10中)并输入netstat -ano > output.txt
,它通常会生成一个名为“output.txt”的文件并输出我的netstat命令。
但是当我在当前脚本中运行该命令时,它会创建'output.txt'文件,但是没有写入任何内容。
如果你只是把你的cmd
投射到像str
it那样的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()