1

我想打印我电脑中所有正在运行的进程。我的一个过程称为哈哈.exe. 这是我的代码:

# -*- coding: utf-8 -*-
import psutil
for proc in psutil.process_iter():
        print proc.name().encode('utf-8')

我得到??.exe了中文进程的输出。有人知道如何正确显示进程名称吗?

4

3 回答 3

0

encode是错误的方法:编码的结果是一个二进制值,准备输出到文件。您正在考虑的是 decode函数,它将二进制值(返回)转换为字符串。

如果字符串在没有编码(或解码)的情况下无法正确显示,那么您需要确定使用了哪种编码,将名称转换为字节串,然后从正确的类型解码。


像许多语言一样,Python 开始以正确的方式概念化字符串处理:

  • 文本数据没有(真正的)编码或字节语义。解释器使用它想要的任何编码,并向用户呈现字符。您必须对其进行编码才能将其发送到文件(但是,有一个默认编码:UTF-8 或语言环境都有意义,我相信 Python 会为此选择 UTF-8。)
  • 二进制数据没有文本表示:您必须对其进行显式解码才能将其视为文本,这迫使您考虑它的编码方式。
于 2016-07-18T15:06:47.827 回答
0

你的操作系统是中文的并在cmd窗口中运行脚本?你可以proc.name().encode('gbk')

于 2016-07-18T15:32:11.737 回答
0

也许尝试做这样的格式?

import psutil

for proc in psutil.process_iter():
    try:
        pinfo = proc.as_dict(attrs=['name'])
    except psutil.NoSuchProcess:
        pass
    else:
        print pinfo
于 2016-07-18T15:06:23.967 回答