如何在Windows上使用Python处理包含EOF / Ctrl-Z字符的大文本文
发布时间:2020-12-13 20:30:30 所属栏目:Windows 来源:网络整理
导读:我需要使用Python脚本处理许多以逗号分隔的大型文本文件(最大值大约为15GB).问题是文件偶尔会在它们中间包含DOS EOF(Ctrl-Z)字符. (不要问我为什么,我没有生成它们.)另一个问题是文件在Windows机器上. 在Windows上,当我的脚本遇到其中一个字符时,它会认为它
我需要使用Python脚本处理许多以逗号分隔的大型文本文件(最大值大约为15GB).问题是文件偶尔会在它们中间包含DOS EOF(Ctrl-Z)字符. (不要问我为什么,我没有生成它们.)另一个问题是文件在Windows机器上.
在Windows上,当我的脚本遇到其中一个字符时,它会认为它位于文件的末尾并停止处理.由于各种原因,我不允许将文件复制到任何其他计算机.但我仍然需要处理它们. 以下是我的想法: >以二进制模式读取文件,抛出等于chr(26)的字节.这样可行,但需要大约永远. 我的IDEAL解决方案只是将文件作为文本读取而忽略Ctrl-Z字符.有没有合理的方法来实现这一目标?
使用Python很容易删除DOS EOF字符;例如, def delete_eof(fin,fout): BUFSIZE = 2**15 EOFCHAR = chr(26) data = fin.read(BUFSIZE) while data: fout.write(data.translate(None,EOFCHAR)) data = fin.read(BUFSIZE) import sys ipath = sys.argv[1] opath = ipath + ".new" with open(ipath,"rb") as fin,open(opath,"wb") as fout: delete_eof(fin,fout) 这将文件路径作为其第一个参数,并将文件复制到没有chr(26)字节到相同的文件路径,附加.new.小提琴味道. 顺便说一下,你确定DOS EOF字符是你唯一的问题吗?很难想象一种理智的方式,它们最终可能会被用作文本文件的文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 搜索和浏览离线 Wikipedia 维基百科(中/英)数据工具
- 在Windows下调试Android NDK
- windows – 如果不支持升级,是否有必要为所有产品版本使用唯
- windows-7 – 同一台PC上的Windows Virtual PC和VirtualBox
- windows-server-2008 – Server 2008 Web Edition限制
- active-directory – Windows 7 Trust问题
- windows – ‘foreman’不被识别为内部或外部命令
- Windows – 64位大型mallocs
- windows – 崩溃转储分析
- Windows Server 2012 R2在哪里可以看到WindowsImageBackup文