Как записать верхний вывод в файл в Python? - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь записать top -n1 в файл на python. Это дает ошибку размера буфера. Я новичок в Python, и не понимаю этого, так как все выглядит довольно просто.

import subprocess
p = subprocess.Popen("top", "n1",stdout=subprocess.PIPE, shell=False)
(output, err) = p.communicate()
topfile = open("top.txt","w+")
topFile.write(output)
topFile.close()

Ошибка:

p = subprocess.Popen ("top", "n1", stdout = subprocess.PIPE, shell = False)

Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", строка 659, в init поднять TypeError («bufsize должен быть целым числом») TypeError: bufsize должен быть целым числом

Добавление размера буфера как int

import subprocess
p = subprocess.Popen("top", "n1",stdout=subprocess.PIPE, shell=False, bufsize =1)
(output, err) = p.communicate()
topHeavyFile = open("topHeavy.txt","w+")
topHeavyFile.write(output)
topHeavyFile.close()

Ошибка:

p = subprocess.Popen ("top", "n1", stdout = subprocess.PIPE, shell = False, bufsize = 1) TypeError: init () получил несколько значений для ключевого слова Аргумент 'bufsize'

1 Ответ

1 голос
/ 05 апреля 2019

Попробуйте это.

import subprocess
p = subprocess.Popen(["top", "n1", "b"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()

"b", обозначающий пакетный режим, устраняет ошибку top: failed tty get.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...