Почему мой код subprocess.call (команда) ничего не записывает в выходной файл txt? - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь использовать модуль подпроцесса 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', но в нем ничего не написано.

1 Ответ

0 голосов
/ 30 марта 2019

Если вы просто приведете свой 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...