【问题标题】:writing function to file, getting none将函数写入文件,没有得到
【发布时间】:2012-10-19 17:10:08
【问题描述】:

我正在尝试将 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()

该文件包含“无”行。

在提示 psutils.test() 显示:

用户 PID %CPU %MEM VSZ RSS TTY 开始时间命令 根 1 0.0 0.1 3532 1944 ? 14:23 00:00 初始化 根 2 0.0 ? ? ? ? 14:23 00:00 线程 根 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 等等。

【问题讨论】:

  • 您是否具有写入目录的必要权限?
  • psutil.test() 返回什么值?
  • “无法正常工作”是什么意思? sysinfo.txt 显示什么?
  • 运行 test = psutil.test() 后测试为无。也许 psutil.test() 不返回任何东西,只是打印结果?
  • @PrototypeStark 是的,我有权利。我添加了提示输出和我在文本文件中得到的输出。

标签: python output


【解决方案1】:

试试这个:

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

这会将标准输出重定向到文件,写入文件,然后给你正确的答案。

【讨论】:

  • 我收到 NameError: global name 'close' is not defined
  • 可能应该是sys.stdout.close() ...我实际上看到它包含在某个上下文管理器中...非常酷
  • 我不知道为什么会这样。但我很高兴它确实如此。谢谢! @PrototypeStark 和 mglison
  • @HeWhoStudies 它之所以有效,是因为我已将 psutil.test() 的输出重新路由到另一个文件。
  • @HeWhoStudies 选择答案是 SO 表示感谢的方式 :-)
【解决方案2】:

psutil.test() 只打印结果,没有返回语句。试试这个:

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())

【讨论】:

  • 你是个巫师。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 2011-09-30
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多