wca*_*art 1 python python-2.7 python-os
我正在尝试获取os.stat.st_mtime特定目录的最后修改时间()。我的问题是我添加了一些隐藏的元数据文件(它们以开头.)。如果使用,os.stat(directory).st_mtime我得到更新元数据文件的日期,而不是目录中非隐藏文件被修改的日期。我想获取目录中除隐藏元数据文件以外的所有其他文件的最新修改时间。
我认为可以编写自己的函数,大致如下:
for file in folder:
if not file starts with '.':
modified_times.append(os.path.getmtime('/path/to/file')
last_time = most recent of modified_times
Run Code Online (Sandbox Code Playgroud)
但是,是否可以在python中本地执行此操作?还是我需要编写自己的函数,例如上面的伪代码(或类似此问题的东西)?
您想要的结果是不可能的。所有非隐藏文件的最新修改时间不一定与虚拟的“忽略隐藏文件的目录的最后修改时间”相对应。问题在于,将文件移入和移出目录时会修改目录,但文件时间戳不会更改(文件已移动但未修改)。因此,您建议的解决方案充其量只能是一种启发式方法。您可以希望它是正确的,但是无法确定。
无论如何,没有,没有内置的功能可以提供这种启发。隐藏文件和非隐藏文件的概念取决于操作系统和文件系统,并且Python没有提供关心区别的内置API。如果要创建“ last_modified_guess”函数,则必须自己编写(为效率起见,os.scandir建议您以它为基础)。
像这样简单:
last_time = max(entry.stat().st_mtime for entry in os.scandir(somedir) if not entry.name.startswith('.'))
Run Code Online (Sandbox Code Playgroud)
会为您提供非隐藏目录条目的最新最近修改时间(自该时间点起的秒数)。
更新:经过进一步思考,该glob模块的确包含.前缀含义“ hidden” 的概念,因此您可以使用glob.glob/ glob.iglobof os.path.join(somedir, '*')来为您过滤掉“ hidden”文件。话虽如此,您放弃了某些潜在的好处os.scandir(免费或缓存的stat结果,免费类型检查等),因此,如果您需要的只是“隐藏”过滤,那么简单的.startswith('.')检查就不值得放弃。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |