Python如何读取存储1600万位圆周率的长数值TXT文件并保存为列表
Python处理超长圆周率TXT文件并转换为列表的实现方案
你现有的参考代码存在选型错误:用pandas的read_csv处理纯圆周率数值的文本文件并不合适,read_csv是用来读取带分隔符的结构化表格数据的,如果你的pi.txt是连续存储的圆周率数字(仅含数字、小数点和换行符),用这个方法读取不仅会出现格式解析错误,还会增加不必要的性能开销。
1600万位的圆周率文本实际体积仅十几MB,绝大多数设备都可以直接全量加载,你可以直接用Python原生文件操作实现需求,不需要引入第三方依赖:
方案1:全量读取(适合绝大多数场景)
# 打开文件读取全部内容 with open('/home/pp/Pictures/pi.txt', 'r', encoding='utf-8') as f: content = f.read() # 过滤非数字字符(去掉小数点、换行、空格等无效内容),逐位转成列表元素 pi_list = [int(char) for char in content if char.isdigit()]
如果你的文件体积更大、担心内存溢出,可以用逐块读取的方式处理:
方案2:逐块读取(适合超大型文件避免内存溢出)
pi_list = [] # 单次读取1MB内容,可根据设备内存调整块大小 chunk_size = 1024 * 1024 with open('/home/pp/Pictures/pi.txt', 'r', encoding='utf-8') as f: while True: chunk = f.read(chunk_size) # 读到文件末尾结束循环 if not chunk: break # 逐位处理当前块的有效数字 for char in chunk: if char.isdigit(): pi_list.append(int(char))
以上两种方案最终得到的pi_list就是按顺序存储圆周率每一位数字的列表。
内容的提问来源于stack exchange,提问作者Vicente Romero
相关产品推荐
相关产品推荐

