Python逐行读取文件,到最后一行结束

本文介绍从MATLAB转向Python进行文件处理的方法。重点讲解了Python中如何模拟MATLAB的feof函数功能,通过检查读取的行是否为空来判断文件是否读完。

       之前习惯用MATLAB写脚本,现在正上手kaldi,MATLAB写脚本的话,以后会有诸多不方便之处,抓紧学习Python。

       MATLAB中有feof函数,这个函数的功能是判断指针是否指到最后一行,如果是则返回为真。由于Python中没有这个

函数,所以要加个判断,判断读取的字符串是否为空,如果为空,则结束函数

if not line:
    break

完整程序如下:

dicFile = open('FilePath','r')
while True:
    line = dicFile.readline()
    if not line:
        break
    #Str Process
dicFile.close()



### 逐行读取文件并修改内容 在 Python 中,可以通过逐行读取文件内容,并在读取过程中对每一行进行处理和修改。这种方法适用于需要对文件内容进行逐行分析或修改的场景。常用的逐行读取方法包括使用 `for` 循环遍历文件对象、`readlines()` 方法获取所有行并处理,或使用 `readline()` 方法逐行读取内容[^2]。 以下是一个使用 `readlines()` 方法逐行读取文件、修改特定内容并写入新文件的示例: ```python # 以读模式打开原始文件,以写模式创建新文件 with open('input.txt', 'r', encoding='utf-8') as fr, open('output.txt', 'w', encoding='utf-8') as fw: lines = fr.readlines() # 读取所有行 for line in lines: modified_line = line.replace('0', 'a') # 替换每一行中的特定内容 fw.write(modified_line) # 将修改后的行写入新文件 ``` 该方法适用于处理较小的文本文件,可以灵活地在每一行中查找和替换内容。例如,可以将文件中所有的 `'0'` 替换为 `'a'`,如示例中所示[^3]。 如果文件较大,不建议一次性读取所有行到内存中,而是可以使用 `readline()` 方法逐行读取并处理: ```python # 使用 readline() 方法逐行处理 with open('large_file.txt', 'r', encoding='utf-8') as fr, open('modified_large_file.txt', 'w', encoding='utf-8') as fw: line = fr.readline() while line: modified_line = line.replace('old_value', 'new_value') fw.write(modified_line) line = fr.readline() ``` 这种方式可以有效降低内存占用,适用于处理大文件[^2]。 此外,还可以使用 `for` 循环直接遍历文件对象,逐行处理内容: ```python # 使用 for 循环逐行读取 with open('data.txt', 'r', encoding='utf-8') as fr, open('updated_data.txt', 'w', encoding='utf-8') as fw: for line in fr: if 'target' in line: line = line.replace('target', 'replacement') # 替换匹配到的行 fw.write(line) ``` 该方法简洁明了,适合在逐行处理时对特定行进行修改[^2]。 ### 注意事项 - 在处理文件时,应合理选择读取方式以优化内存使用,例如对于大文件优先使用逐行读取。 - 文件读写时应指定正确的编码方式(如 `encoding='utf-8'`),以避免编码不一致导致的错误。 - 在修改文件内容时,建议先将修改后的内容写入临时文件,再替换原始文件,以避免数据丢失或损坏[^3]。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值