Python读取由另一个进程打开的文件会导致UnicodeDecodeError
我正在尝试在VIM编辑器中打开的文件的内容 Id est:Python读取由另一个进程打开的文件会导致UnicodeDecodeError,python,file,encoding,Python,File,Encoding,我正在尝试在VIM编辑器中打开的文件的内容 Id est: fileh = open( path, 'r' ) content = fileh.read() fileh.close() 在VIM中打开文件时,会导致错误。 如果VIM持有文件的独占锁,我可以理解这一点,但根据错误消息,情况似乎并非如此: UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 16: ordinal not in range(128
fileh = open( path, 'r' )
content = fileh.read()
fileh.close()
在VIM中打开文件时,会导致错误。
如果VIM持有文件的独占锁,我可以理解这一点,但根据错误消息,情况似乎并非如此:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 16: ordinal not in range(128)
在我看来,VIM在打开的文件中写入了一个非ascii字符
使用开放路径“r”打开文件,编码为“utf-8”或utf-16,似乎无法解决utf-8/utf-16解码错误的问题
感谢您的帮助
更新:当我在Gedit而不是VIM中打开文件时,不会出现此问题。当然,这不是一个解决方案,所以我仍然需要找出哪里出了问题。好的,我找到了答案 问题不在于python无法解码我感兴趣的文件,而是python正在读取VIM生成的.swp文件。我的程序没有正确过滤输入目录
谢谢你的帮助 VIM是否可能使用UTF-8或ASCII以外的其他编码打开了文件,例如ISO-8859-1?请尝试以二进制模式打开文件。@Skurmedel我会看一看。@MarkRansom我需要处理文件中的文本,因此以二进制模式打开会有问题。@a.J.Rouvoet:不会有问题,您只需要将字节序列str类型解码为字符串unicode类型。您会发现Ned Batchelder的unicode演示非常有用。