将文本文件读入变量,后续print()返回转义字符?

1 投票
1 回答
1352 浏览
提问于 2025-04-18 06:57

我一直在找这个问题的答案,但没找到。我有一段代码,想把一个文本文件的内容读到一个变量里,这样我就可以在后面用它(特别是用来结束一个正在运行的进程)。

这个文件是这样生成的:

os.system('wmic process where ^(CommandLine like "pythonw%pycpoint%")get ProcessID > windowsPID.txt')

生成的文本文件 windowsPID.txt 内容如下:

ProcessId
4076

我用来读取这个文件的Python代码是这样的:

with open('windowsPID.txt') as f: print "在 BuildLaunch 中,我的 PID 是: " b = f.readlines() print b

print b 输出的结果是:

['\xff\xfeP\x00r\x00o\x00c\x00e\x00s\x00s\x00I\x00d\x00 \x00 \x00\r\x00\n', '\x004\x000\x007\x006\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00\r\x00\n', '\x00']

我能看到4076,但为什么不能正确输出呢?我只需要第二行的内容。

更新

正如roippi提到的,可以通过强制以unicode-16格式打开文件来解决这个问题:

import codecs with codecs.open('windowsPID.txt', encoding='utf-16') as f:

这样就解决了!

-Chow

1 个回答

3

Python 默认会尝试用 utf-8 编码来打开文件,但你的文件用的是其他编码方式,所以你看到的是原始的字节输出在屏幕上。

\xff\xfe 是 UTF-16(小端)字节顺序标记。你需要用正确的编码来打开你的文件。

import codecs

with codecs.open('windowsPID.txt', encoding='utf-16') as f:

撰写回答