在python中查找最近编辑的文件

问题描述 投票:0回答:8

我有一组文件夹,我希望能够运行一个函数来查找最近编辑的文件并告诉我文件的名称及其所在的文件夹。

文件夹布局:

root
    Folder A
        File A
        File B
    Folder B
        File C
        File D
etc...

有什么建议可以让我开始,因为我遇到了一些困难。

python file path directory
8个回答
22
投票

您应该查看 os.walk 函数,以及 os.stat,它可以让您执行以下操作:

import os

max_mtime = 0
for dirname,subdirs,files in os.walk("."):
    for fname in files:
        full_path = os.path.join(dirname, fname)
        mtime = os.stat(full_path).st_mtime
        if mtime > max_mtime:
            max_mtime = mtime
            max_dir = dirname
            max_file = fname

print(max_dir, max_file)

11
投票

它有助于将内置目录遍历包装为仅生成文件的完整路径的函数。然后,您可以使用返回所有文件的函数并选出修改时间最长的文件:

import os

def all_files_under(path):
    """Iterates through all files that are under the given path."""
    for cur_path, dirnames, filenames in os.walk(path):
        for filename in filenames:
            yield os.path.join(cur_path, filename)

latest_file = max(all_files_under('root'), key=os.path.getmtime)

8
投票

如果有人正在寻找一种单行方式来做到这一点:

latest_edited_file = max([f for f in os.scandir("path\\to\\search")], key=lambda x: x.stat().st_mtime).name

4
投票
  • 使用 os.walk 列出文件
  • 使用 os.stat 获取文件修改时间戳(st_mtime)
  • 将时间戳和文件名放在一个列表中,并按时间戳排序,最大的时间戳是最近编辑的文件。

2
投票

对于多个文件,如果有人来这里:

import glob, os

files = glob.glob("/target/directory/path/*/*.mp4")
files.sort(key=os.path.getmtime)

for file in files:
   print(file)

这将打印

/path/
内任何文件夹中具有
.mp4
扩展名的所有文件,最近修改的文件路径位于底部。


1
投票

你可以使用

os.walk

参见:http://docs.python.org/library/os.html


1
投票

使用

os.path.walk()
遍历目录树,使用
os.stat().st_mtime
获取文件的 mtime。

您传递给

os.path.walk()
visit
参数)的函数只需要跟踪它所看到的最大 mtime 以及它在哪里看到的。


1
投票

我正在使用

path = r"C:\Users\traveler\Desktop"

import os
def all_files_under(path):
   #"""Iterates through all files that are under the given path."""
   for cur_path, dirnames, filenames in os.walk(path):
      for filename in filenames:
         yield os.path.join(cur_path, filename)
latest_file = max(all_files_under('root'), key=os.path.getmtime)

我在这里缺少什么?

© www.soinside.com 2019 - 2024. All rights reserved.