为什么我的文件没有在程序中更新?

2024-10-06 12:37:26 发布

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

在python中尝试从文件中删除行,效果很好,但在我重新启动程序之前它不会更新。。。在程序中删除行和更新的地方,我该如何处理呢?我正在使用队列,因为我正在发送带有项目的api请求以同时发送它们。谢谢

代码示例:

class auto_claimer:
    def __init__(self) -> None:
        self.username_list = [user.replace("\n", "") for user in open("database.txt")]
        self.mutex = Lock() 
        self.userQ = Queue()

    def reloadQ(self):
        for i in self.username_list:
            self.userQ.put(i)
        #print(len(self.username_list), "Words Successfully added to Queue")

    def Queue(self):
        while True:
            if self.userQ.qsize() < len(self.username_list) / 2:
                self.reloadQ()

    def delete(self, item):
        with open("database.txt", "r") as f:
            lines = f.readlines()
        with open("database.txt", "w") as f:
            for line in lines:
                if line.strip("\n") != item:
                    f.write(line)
                    f.flush()
        print("Successfully removed {} from the text file".format(item))

Tags: inself程序txtforqueuedefline
1条回答
网友
1楼 · 发布于 2024-10-06 12:37:26

当您继续打开一个文件进行读取,然后再次打开它以覆盖同一范围内的整个内容而不关闭它时,无论如何,这是一种糟糕的做法

在大多数情况下,python中对文件的许多更改直到文件关闭后才生效,因此如果脚本编辑、打开并读取文件,它将看不到编辑。因此,每次完成读取或写入时,请关闭该文件

def delete(self, item):
        with open("database.txt", "r") as f:
            lines = f.readlines()
            f.close()
        with open("database.txt", "w") as f:
            for line in lines:
                if line.strip("\n") != item:
                    f.write(line)
                    f.flush()
            f.close()
        print("Successfully removed {} from the text file".format(item))

相关问题 更多 >