为什么我的subprocess.call(命令)代码什么都不写入txt输出文件?

问题描述 投票:0回答:1

我正在尝试使用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'文件,但是没有写入任何内容。

python-3.x subprocess
1个回答
0
投票

如果你只是把你的cmd投射到像strit那样的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()
© www.soinside.com 2019 - 2024. All rights reserved.