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

时间:2014-05-19 03:05:01

标签: python string unicode utf-16

一直在寻找这个无济于事。我有一个片段,我想在python中读取一个文本文件到一个变量,以便我以后可以引用它(特别是杀死正在运行的进程)。

文件生成如下:

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 "In BuildLaunch, my PID is: " 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 个答案:

答案 0 :(得分:3)

Python默认尝试使用utf-8编码打开文件,但是您的文件是以其他方式编码的,因此您可以将原始字节输出到屏幕上。

\xff\xfe是UTF-16(LE)byte order mark。您需要使用正确的编码打开文件。

import codecs

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