我有一个用utf-16le编码创建的临时文件列表。我需要合并那些临时文件和结果文件应该在utf-16。在
我所做的一切
for fd in source_fds_list:
with open(destination_url, 'ab') as destn_fd:
shutil.copyfileobj(fd, destn_fd)
fd.close()
这将导致在目标文件中追加多个BOM表。在
如果临时文件是用不同的编码方式编写的呢?在
除了使用文件读取手动检查BOM表之外,是否存在更好的解决方案?在
shutil.copyfileobj()
复制所有数据,不管如何。BOM只是文件中的数据,shutil
不是也不会知道这种文件格式的特定细节。在您可以轻松地跳过BOM,但仍将大部分复制工作留给
shutil.copyfileobj()
:通过首先从源文件中读取最初的2个字节,}。在
shutil.copyfileobj()
将继续读取文件中的所有内容,跳过BOM。不管怎样,shutil.copyfileobj()
在幕后所做的就是调用data = source.read(buffer)
和{如果您不知道用于输入文件的编解码器,那么您将陷入启发式。您可以测试各种^{} BOM constants ,但随后出现误报的可能性;一个使用非UTF-*编解码器编码的文件和初始字节看起来像BOM:
^{pr2}$相关问题 更多 >
编程相关推荐