我正在尝试使用自动脚本进入最近创建的文件夹。
我有一些代码
import datetime, os, shutil
today = datetime.datetime.now().isoformat()
file_time = datetime.datetime.fromtimestamp(os.path.getmtime('/folders*'))
if file_time < today:
changedirectory('/folders*')
我不知道如何从现在开始查看最新的时间戳。有什么想法吗?
由于
答案 0 :(得分:48)
大多数操作系统/文件系统中没有“创建时间”的实际跟踪:您获得的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
分配不会改为给定all_subdirs
任何路径列表
(无论是目录或文件的路径,max
调用都是最新修改过的。)
答案 1 :(得分:7)
找一个最新的
# 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]
答案 2 :(得分:6)
快速的单行:
directory = 'some/path/to/the/main/dir'
max([os.path.join(directory,d) for d in os.listdir(directory)], key=os.path.getmtime)
答案 3 :(得分:1)
这是找到最新目录的一种方法
import os
import time
import operator
alist={}
now = time.time()
directory=os.path.join("/home","path")
os.chdir(directory)
for file in os.listdir("."):
if os.path.isdir(file):
timestamp = os.path.getmtime( file )
# get timestamp and directory name and store to dictionary
alist[os.path.join(os.getcwd(),file)]=timestamp
# sort the timestamp
for i in sorted(alist.iteritems(), key=operator.itemgetter(1)):
latest="%s" % ( i[0])
# latest=sorted(alist.iteritems(), key=operator.itemgetter(1))[-1]
print "newest directory is ", latest
os.chdir(latest)
答案 4 :(得分:0)
import os, datetime, operator
dir = "/"
folders = [(f,os.path.getmtime('%s/%s'%(dir,f))) for f in os.listdir(dir) if os.path.isdir(f)]
(newest_folder, mtime) = sorted(folders, key=operator.itemgetter(1), reverse=True)[0]
答案 5 :(得分:0)
Python 3.4+ 版
我们可以试试pathlib,解决方案是一个班轮
查找最新内容
import pathlib
max(pathlib.Path(directory).glob('*/'), key=os.path.getmtime)
获取第 n 个最新版本
import pathlib
sorted(pathlib.Path(directory).glob('*/'), key=os.path.getmtime)[-n]