Python - 打开txt文件,删除每行的最后几位并覆盖旧文件

时间:2017-08-09 14:46:06

标签: python-2.7

Python中有没有办法读取txt文件,删除每行的最后6个字符并用相同的内容覆盖旧文件,而不是每行最后6个字符?

我试过这样的事情:

with open(dat, "r+") as fp:
    for line in fp:
        line = line[:-6]
        fp.write(line+"\n")

但这只会给我一个奇怪的文件,在错误的地方有多个条目和数字。

另外

with open(dat, "r+") as fp:
    for line in fp:
        line = line[:-6]
        fp.write(line+"\n")

不起作用。当我这样做时,整个文件都是空的。

是否有一种聪明的方法可以在不进行更改的情况下执行此操作,将所有内容写入单独的文件中?

1 个答案:

答案 0 :(得分:1)

您需要将更改的字符附加到临时列表,然后在再次写入之前将文件指针移回到开头:

with open(dat, "r+") as fp:
    temp_list = []
    for line in fp:
        line = line[:-6]
        temp_list.append(line)
    fp.seek(0, 0)
    fp.write("\n".join(temp_list))

我希望这会有所帮助