如何让多个程序访问同一个文件而无需手动为它们提供所有文件路径?

时间:2017-11-29 22:17:38

标签: python python-3.x file tkinter

我正在编写几个需要访问同一文件的相关python程序,但是这个文件将间歇性地更新/替换,我需要它们才能访问新文件。我目前的想法是有一个特定的文件夹,在需要更换时放置最新文件,并且好奇我如何让python选择文件夹中的文本文件。

或者,我最好创建一个程序,该程序具有完全专用于保存文件信息的类,并让每个程序引用该类中的文件。我可以让Class使用 tkinter.filedialog 在必要时选择一个新文件,并且可能有一个文本文件,其中包含我需要访问的文件的路径或名称,并让其他程序引用该文件

编辑:我根本不需要写入文件。但是,我想拥有它,以便每次运行程序或更新文件路径时都不需要手动更新文件的路径。

Edit2:更改标题以适应更多问题

3 个答案:

答案 0 :(得分:0)

如果要求在特定目录中获取最近修改的文件:

import os

mypath = r'C:\path\to\wherever'

myfiles = [(f,os.stat(os.path.join(mypath,f)).st_mtime) for f in os.listdir(mypath)]

mysortedfiles = sorted(myfiles,key=lambda x: x[1],reverse=True)

print('Most recently updated: %s'%mysortedfiles[0][0])

基本上,获取目录中的文件列表,以及它们作为元组列表的修改时间,在修改日期排序,然后得到你想要的那个。

答案 1 :(得分:-1)

听起来你正在寻找一个singleton pattern,这是一种将很多逻辑隐藏在“只有一个实例”对象中的巧妙方法。 这意味着识别,检索和传递文件的逻辑都集中在一个地方,并且您的程序通过说“给我那个东西的一个实例”与它进行交互。如果你需要改变识别,检索或交付那些东西的方式,你可以隐藏它。

值得注意的是,单例模式可以被视为反模式,因为它是一种全局状态,如果这是一个交易破坏者,它取决于程序的上下文。

答案 2 :(得分:-2)

要“让python选择文件夹中的任何文本文件”,您可以使用expand.grid(df$Group, df$Group)库获取目录中的文件列表,请参阅:{ {3}}

您还可以使用glob列出目录中的所有文件,而不匹配模式名称。

然后,os.listdir()open()您在该目录中找到的任何文件或文件。