我正在编写几个需要访问同一文件的相关python程序,但是这个文件将间歇性地更新/替换,我需要它们才能访问新文件。我目前的想法是有一个特定的文件夹,在需要更换时放置最新文件,并且好奇我如何让python选择文件夹中的文本文件。
或者,我最好创建一个程序,该程序具有完全专用于保存文件信息的类,并让每个程序引用该类中的文件。我可以让Class使用 tkinter.filedialog 在必要时选择一个新文件,并且可能有一个文本文件,其中包含我需要访问的文件的路径或名称,并让其他程序引用该文件
编辑:我根本不需要写入文件。但是,我想拥有它,以便每次运行程序或更新文件路径时都不需要手动更新文件的路径。
Edit2:更改标题以适应更多问题
答案 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()
您在该目录中找到的任何文件或文件。