在Python中修改txt文件行的最佳方法是什么

2024-10-01 15:43:49 发布

您现在位置:Python中文网/ 问答频道 /正文

比如说。我希望删除/添加/更改txt文件中24和40之间的行。 我将txt文件按行导入列表。并修改列表,然后重写一个新文件。 这是我的密码:

def deletetfile(file):
    file = open(file)
    content = file.read()
    lines = content.splitlines()
    print(lines)
    del lines[24:40]
    print(lines)
    with open("testfile2.txt", "w") as f:
        for i in lines:

            f.write(i+'\n')

if __name__ == "__main__":
    deletetfile('testfile.txt')

但我认为它在一个非常大的文件中会运行得非常慢。
有没有更好的方法在python中修改txt文件的行


Tags: 文件txt密码列表readdefwithopen
2条回答

摆脱for循环,并将其替换为以下内容:

f.write(”\n”.join(lines))

除了潜在的性能问题外,在内存中读取整个文件可能会导致内存错误,因此最好在需要时避免。在您的情况下,简单的解决方案是逐行读取源文件(通过迭代文件),将要保留的行复制到新文件,然后删除原始文件并将新文件重命名为旧文件。另外,要注意总是关闭文件(使用with语句是这样做的标准方式):

def delete_lines(file_path, start, end):
    tmp_path = "{}.tmp".format(file_path)
    with open(file_path) as src, open(tmp_path, "w") as dest:
        for lineno, line in enummerate(src):
            if lineno < start or lineno > end:
                dest.write(line)
    os.remove(filepath)
    os.rename(tmp_path, file_path)

if __name__ == "__main__":
    delete_lines('testfile.txt', 24, 40)

注意:未经测试的代码,所以请仔细检查它-但你明白了;-)

相关问题 更多 >

    热门问题