在Python中查找目录中的最新文件夹

2024-05-13 23:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图有一个自动脚本,进入最近创建的文件夹。

我下面有一些代码

import datetime, os, shutil 

today = datetime.datetime.now().isoformat() 
file_time = datetime.datetime.fromtimestamp(os.path.getmtime('/folders*')) 

if file_time < today: 
    changedirectory('/folders*') 

我不知道从现在起如何让它检查最新的时间戳。有什么想法吗?

谢谢


Tags: path代码import脚本文件夹todaydatetimetime
3条回答

还有一句简短的话:

directory = 'some/path/to/the/main/dir'
max([os.path.join(directory,d) for d in os.listdir(directory)], key=os.path.getmtime)

在大多数操作系统/文件系统中没有“创建时间”的实际跟踪:您得到的mtime是文件或目录被修改的时间(例如,在目录中创建文件会更新目录的mtime),而从ctime开始,如果提供了最新的inode更改时间(因此,可以通过创建或者删除子目录)。

假设您可以使用“last modified”(在问题中使用“created”只是一个错误),那么您可以找到(例如)当前目录的所有子目录:

import os

all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]

并获得最新的mtime(在Python 2.5或更高版本中):

latest_subdir = max(all_subdirs, key=os.path.getmtime)

如果您需要在当前目录之外的其他地方操作,则不会有太大的不同,例如:

def all_subdirs_of(b='.'):
  result = []
  for d in os.listdir(b):
    bd = os.path.join(b, d)
    if os.path.isdir(bd): result.append(bd)
  return result

在给定的路径列表中,latest_subdir赋值不会改变 (无论是目录或文件的路径,max调用都会得到最新修改的路径)。

一行查找最新

# Find latest
import os; import glob
max(glob.glob(os.path.join(directory, '*/')), key=os.path.getmtime)

一个班轮寻找最新的

# Find n'th latest
import os; import glob
sorted(glob.glob(os.path.join(directory, '*/')), key=os.path.getmtime)[-n]

相关问题 更多 >