Python如何将超大型.txt文本文件读取存储为单个字符串
问题原因
你通过len()方法确认字符串长度仅为598261,说明问题出在文件读取阶段,和打印输出、Python字符串存储能力无关,常见诱因有两个:
- Windows平台文本模式读取限制:使用默认
'r'文本模式打开文件时,Windows系统会把文件内的0x1A(ASCII替代字符,对应Ctrl+Z)识别为文件结束符,直接终止读取,哪怕文件实际还有剩余内容,这是最常见的诱因。 - 编码不匹配:如果
odyssey.txt的存储编码和你当前环境的Python默认读取编码不一致,解码过程中遇到非法字符时可能触发隐式截断,不会抛出报错。
解决方案
修复读取逻辑
首先调整读取代码,规避上述问题:
- 手动指定文件编码,避免依赖系统默认编码:
# 不确定编码可以依次尝试utf-8、latin-1、utf-16等常见编码 with open('odyssey.txt', 'r', encoding='utf-8') as file: odysseytext = file.read().replace('\n', '')
- 如果是Windows系统,建议直接用二进制模式读取后再解码,彻底避开文本模式的EOF截断问题:
with open('odyssey.txt', 'rb') as file: raw_content = file.read() # 按文件实际编码替换解码参数 odysseytext = raw_content.decode('utf-8').replace('\n', '')
超大量文本字符串存储说明
Python的字符串本身没有长度上限,仅受当前进程可用内存限制。《奥德赛》的文本量极小,远小于常规设备的可用内存,不需要做特殊适配。如果后续需要处理GB级的超大文本、内存不足以装载全部内容时,可以用mmap模块做内存映射,在不加载全量内容到内存的前提下实现字符串式的随机访问。
内容的提问来源于stack exchange,提问作者Fossil
相关产品推荐
相关产品推荐

