无法清除文件内容

时间:2016-09-20 05:54:18

标签: python python-2.7

我的文件数据低于数据。

List<PogProdData> list = new ArrayList<PogProdData>();
Integer[] pogNums = list.stream().map(PogProdData::getPogNumber).toArray(Integer[]::new);

我只想在Set device是Austin-Backup时复制编辑下的命令。

edit 48
    set dst 192.168.4.0 255.255.255.0
    set device "Tague-VPN"
    set comment "Yeshtel"
edit 180
    set dst 64.219.107.45 255.255.255.255
    set device "Austin-Backup"
    set comment "images.gsmc.org"

我正在尝试将测试文件内容写入新文件(脚本),如果发现命令“set comment”Yeshtel“”,我想删除新文件中的内容。我试图删除但它没有发生。我是Python新手,你能告诉我什么是Prob吗?

我知道在写入模式下重新打开同一个文件会清除内容..

2 个答案:

答案 0 :(得分:1)

我怀疑问题是您将同一个文件打开两次,一次打开newfile,第二次打开a。虽然当它以a打开然后关闭它时应该被截断,但是如果文件系统已经缓存它们,那么您在newfile上所做的写操作可能仍会出现,直到写入截断版本为止。

我建议只打开一次文件。当您需要截断它时,请在其上调用truncate方法。

if word not in line:
    newfile.truncate()

如果您在截断后可能会对文件写更多内容,则可能还应seek返回起始位置(例如newfile.seek(0))。如果您在截断文件后将完成该文件,则不需要该步骤。

答案 1 :(得分:1)

应该是这样的

temp_lines = []
last_line_was_edit = False
found_keyword = False
keyword = "Austin-Backup"
with open('test.txt') as oldfile, open('script.txt', 'w') as newfile:
    for line in oldfile:
        if last_line_was_edit and temp_lines:
            if found_keyword:
                newfile.writelines(temp_lines)
            temp_lines = []

        if line.startswith("edit"):
            last_line_was_edit = True
        else:
            if keyword in line:
                found_keyword = True
            temp_lines.append(line)

请注意,您不应该两次打开文件。只需使用一个临时变量,只写下必须写的内容