我有几个非常大的CSV (技术上TSV)文件,我需要附加在一起。我用过:
copy file1.txt + file2.txt + ... + fileN.txt combined.txt但随后发现每个文件都有一个BOM在开始(),然后出现多次在文件的中间。
但是,文件非常大(每行3000万至4000万行),因此我无法在NotePad++中打开它们并重新保存它们以删除BOM,因此需要命令行解决方案( cmd或PowerShell),而且理想情况下不需要下载额外的库。
概述:
(在我的例子中,N=4,所以我可以处理一个解决方案,从一个单独的文件中删除BOM,所以在组合之前先对每个文件运行这个方法)
编辑:这可能是一个可能的解决方案:批处理脚本从文件中删除BOM ( file ),但是我对编码和PowerShell/批处理的知识太差了,以至于我甚至无法判断它是否适用!我不介意合并的文件是ANSI还是UTF-8 (我将把它加载到一个可以处理这两种情况的程序中),只要它在内部是一致和正确的。
发布于 2022-04-09 16:16:51
最后我放弃了,用Python (坚持你所知道的,嗯?):
import shutil
with open("combined.txt", "w", encoding="utf-8") as wfd:
for f in my_file_iterator():
with open(f, "r", encoding="utf-8-sig") as fd:
shutil.copyfileobj(fd, wfd)用选择的方法或表达式替换my_file_iterator(),以循环处理文件,例如基于pathlib.Path.glob()的内容
在这些答案的帮助下:
shutil.copyfileobj()魔术)utf-8和utf-8-sig编码的技巧)https://stackoverflow.com/questions/71789083
复制相似问题