psutil.test()返回None。如何将其输出写入文件?

时间:2017-10-13 00:57:13

标签: python python-3.x file-io nonetype psutil

我正在尝试将psutil.test()结果写入文件,但它会在文件中打印出我想要的文本,并将“无”写入test.txt

import psutil
from time import sleep
while True:
    proccesses = psutil.test()
    file = open("test.txt", "a")
    file.write(str(proccesses))
    file.write("\n" * 10)
    file.close()
    sleep(5)

2 个答案:

答案 0 :(得分:2)

psutil.test()只需打印到stdout,但会返回None

您可以使用contextlib.redirect_stdout将标准输出重定向(例如,当使用print时)到文件:

import contextlib
import time
import psutil

while True:
    with open("test.txt", 'a') as fout, contextlib.redirect_stdout(fout):
        psutil.test()
        print("\n" * 10)
    time.sleep(5)

答案 1 :(得分:1)

psutil.test()没有返回字符串。它打印一个字符串。解决方法是使用contextlib.redirect_stdout,以便字符串转到您的文件而不是STDOUT

import psutil
from contextlib import redirect_stdout
from time import sleep

with open("test.txt", "a") as file:
    with redirect_stdout(file):
        while True:
            psutil.test()  # Will print to file.
            file.write("\n" * 10)  # or print("\n" * 10)
            sleep(5)

请务必使用两个上下文管理器(with语句),否则您的文件将无法刷新和关闭。 redirect_stdout documentation为文件和重定向使用单独的上下文管理器。