Я пытаюсь использовать модуль подпроцесса Python 3 для вызова команды (т. Е. netstat -ano > output.txt
), но когда я запускаю сценарий, создается выходной файл, но в него ничего не записывается, другими словами, его просто пусто.
Я попытался изучить API модуля подпроцесса о том, как работает метод subprocess.call()
, и поискал в Google решение. Я пытался использовать метод subprocess.check_output()
, но он выводил ее в виде неформатированной строки, а не в виде столбца, который обычно дает ввод netstat -ano
в командную строку Windows.
Это мой текущий код:
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', но в нем ничего не написано.