Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python读取由另一个进程打开的文件会导致UnicodeDecodeError_Python_File_Encoding - Fatal编程技术网

Python读取由另一个进程打开的文件会导致UnicodeDecodeError

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

我正在尝试在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)
在我看来,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演示非常有用。