一直在寻找这个无济于事。我有一个片段,我想在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
答案 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: