Python读取13MB文件时出现数据丢失问题求助
问题分析与解决
你的代码存在逻辑错误,导致仅打印了文件的偶数行,丢失了包括首行在内的所有奇数行:
- 每次循环中,
while file.readline()会读取一行用来判断是否还有内容,但这行并没有被打印;紧接着print(file.readline())又读取下一行并打印。 - 这种逻辑会跳过所有奇数行,所以首行
<!DOCTYPE html>没被输出,控制台也搜不到原本在奇数行的目标数据。
修复方案一:用变量存储读取的行
def get_txt(path): with open(path, 'r', encoding='utf-8') as file: line = file.readline() while line: print(line, end='') # 保留原文件换行,避免重复添加换行符 line = file.readline() if __name__ == '__main__': path = 'data/data.html' get_txt(path)
修复方案二:直接遍历文件对象(更简洁)
Python的文件对象本身可迭代,直接遍历能逐行读取且不会遗漏:
def get_txt(path): with open(path, 'r', encoding='utf-8') as file: for line in file: print(line, end='') if __name__ == '__main__': path = 'data/data.html' get_txt(path)
注意:添加end=''是因为读取到的每行本身已经包含换行符,print()默认会再添加一个换行,会导致输出的行间距变大,影响格式。
内容的提问来源于stack exchange,提问作者fei li
相关产品推荐
相关产品推荐

