将文本文件读入变量,后续print()返回转义字符?
我一直在找这个问题的答案,但没找到。我有一段代码,想把一个文本文件的内容读到一个变量里,这样我就可以在后面用它(特别是用来结束一个正在运行的进程)。
这个文件是这样生成的:
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 个回答
Python 默认会尝试用 utf-8 编码来打开文件,但你的文件用的是其他编码方式,所以你看到的是原始的字节输出在屏幕上。
\xff\xfe
是 UTF-16(小端)字节顺序标记。你需要用正确的编码来打开你的文件。
import codecs
with codecs.open('windowsPID.txt', encoding='utf-16') as f: