1

psutil.test() をファイルに書き込もうとしていますが、動作させることができません。とにかくこれを行うことはありますか?

これは使用しているコードです:

import psutil
import tkMessageBox

def Sysinfo():
 test = psutil.test()
 tkMessageBox.showinfo(title='testing',message=test)
 FILE = open("sysinfo.txt","w")
 FILE.write(str(test))
 FILE.close()

Sysinfo()

ファイルには「None」という行が含まれています。

プロンプトで psutils.test() が表示されます:

USER PID %CPU %MEM VSZ RSS TTY START TIME COMMAND root 1 0.0 0.1 3532 1944 ? 14:23 00:00 初期ルート 2 0.0 ? ? ? ? 14:23 00:00 kthreadd ルート 3 0.0 ? ? ? ? 14:23 00:00 ksoftirqd/0 ルート 5 0.0 ? ? ? ? 14:23 00:00 kworker/u:0 ルート 6 0.0 ? ? ? ? 14:23 00:00 移行/0 など

4

2 に答える 2

3

これを試して:

def SysInfo():
  oldstdout = sys.stdout
  sys.stdout = open("sysinfo.txt","w")
  psutil.test()
  sys.stdout.close()
  sys.stdout = oldstdout
SysInfo()

これにより、stdoutがファイルにリダイレクトされ、ファイルに書き込まれてから、正しい答えが返されます。

于 2012-10-19T17:22:08.827 に答える
2

psutil.test()結果を出力するだけで、return ステートメントはありません。これを試して:

import inspect
import psutil
test_source_code = inspect.getsource(psutil.test)
print test_source_code

return次のようなステートメントを検索できます。

test_source_code.find('return') yields `-1`

psutil.test() の終了方法は次のとおりです。

            print_(templ % (user[:10],
                        pinfo['pid'],
                        pinfo['cpu_percent'],
                        memp,
                        vms,
                        rss,
                        pinfo.get('terminal', '') or '?',
                        ctime,
                        cputime,
                        pinfo['name'].strip() or '?'))

ヒント: 端末で Python コードを読み取る便利な方法を次に示します。(pip install pygments最初にやろう!)

import pygments
from pygments.lexers import PythonLexer
from pygments.formatters import TerminalFormatter
from pygments import highlight

print hightlight(test_source_code, PythonLexer(), TerminalFormatter())
于 2012-10-19T17:20:06.877 に答える