Python 在读取时截断行

标签 python file-io

我有一个应用程序,它从文件中读取行并在读取的每一行上运行它的魔法。读取并正确处理该行后,我想从文件中删除该行。已保留已删除行的备份。我想做类似的事情

file = open('myfile.txt', 'rw+')
for line in file:
   processLine(line)
   file.truncate(line)

这似乎是一个简单的问题,但我想做正确的事情而不是一大堆复杂的 seek() 和 tell() 调用。

也许我真正想做的就是从文件中删除特定行。

在这个问题上花了很长时间之后,我认为每个人都可能是对的,这不是一个好的做事方式。它看起来是如此优雅的解决方案。我一直在寻找类似于 FIFO 的东西,它可以让我从文件中弹出行。

最佳答案

完成后删除所有行:

with open('myfile.txt', 'r+') as file:
    for line in file:
        processLine(line)
    file.truncate(0)

独立删除每一行:

lines = open('myfile.txt').readlines()

for line in lines[::-1]: # process lines in reverse order
    processLine(line)
    del lines[-1]  # remove the [last] line

open('myfile.txt', 'w').writelines(lines)

你可以只留下那些导致异常的行:

import fileinput, sys
    
for line in fileinput.input(['myfile.txt'], inplace=1):
    try: processLine(line)
    except Exception:
         sys.stdout.write(line) # it prints to 'myfile.txt'

一般来说,正如其他人已经说过的那样,您尝试做的事情是个坏主意。

关于Python 在读取时截断行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/525272/

相关文章:

python 3.6 socket pickle 数据被截断

python - 做更多的标题意味着服务器更有可能认为你是人类

python - Pandas 扁平化分层多索引

python - 如何从 Python 中的文件中提取 float ?

java - 如何从文件中读取大的 clob 数据?

javascript - Windows 通用应用程序 - Javascript - 文件 IO - 如果文件已存在则崩溃

c - 如何阻止我的程序在保存字符之前跳过它们

java - Python 到 Java 的翻译

python - write() 创建部分可读/损坏的文件

c - 串口readfile()输出什么类型的参数?在 C/C++ 中