访问正在更新的变量

时间:2017-11-13 19:27:17

标签: python csv

我有一个监视csv文件的函数。它遍历csv文件中的所有行并返回每一行,等待文件更新,如果是,则返回该新值。这就是它的样子:

def follow():
    file_path = filedialog.askopenfilename()
    with open(file_path) as csvDataFile:
        csvReader = csv.reader(csvDataFile)
        csvDataFile.seek(0,0)
        while True:
            line = csvDataFile.readline()
            if not line:
                time.sleep(0.5)
                continue
            yield line

我这样做是为了gui。我有一个按钮,当按下时,加载csv文件并调用此函数。它将每一行保存到一个成员变量列表中。

def browseForFile(self):
        line = pull_csv_data.follow()
        for item in line:
            self.list.append(item)

当按下另一个按钮时,它会遍历该列表并显示gui上的信息:

def listItems(self):
    for i in self.list:
        time.sleep(0.1)
        item = QListWidgetItem(i)
        self.prev_scenes.addItem(item)

问题是,每当我单击按钮显示列表中的数据时,它就会停止响应,直到我终止具有follow()功能的python脚本。为了澄清,follow函数位于我包含在“main”文件中的单独文件中。

基本上......我认为跟随函数不允许其他进程同时运行。真的吗?有解决方法吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

跟随功能与主功能处于同一过程中。因此,当您的跟随功能休眠时,您的整个程序也会休眠。如果你想让它以异步方式运行,你必须明确地这样做。

您应该使用https://pythonhosted.org/watchdog/index.htmlhttps://github.com/seb-m/pyinotify/wiki之类的内容,而不是尝试编写自己的文件处理函数。