我想检索一个目录的最新创建文件的数组。每组文件都在同一时间段内创建 - 边距为1000毫秒。
此列表中的前4个文件是在相同的1000毫秒内创建的。我只想检索那4个文件:
sceflh.jpg - 2014-08-23 05:07:46.100000000
rgxanx.jpg - 2014-08-23 05:07:45.900000000
byoiup.jpg - 2014-08-23 05:07:45.700000000
rrqgnh.jpg - 2014-08-23 05:07:45.500000000
sqthcv.jpg - 2014-08-23 05:07:40.320000000
ebrmvv.jpg - 2014-08-23 05:07:40.200000000
xzvsnt.jpg - 2014-08-23 05:07:40.110000000
ckiinz.jpg - 2014-08-23 05:07:40.100000000
如何检索此类列表?这就是我所拥有的,它只是给了我目录中的所有文件:
def get_files(directory):
files = []
for file in [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory,f))]:
files.append( '{0}/{1}'.format(directory, file) )
return files
编辑:这是我的最终代码
import os
def get_recent_files(directory, threshold=0.9):
files = sorted(get_files(directory), key=os.path.getmtime,reverse=True)
filtered = filter(lambda x: os.path.getmtime(files[0]) - os.path.getmtime(x) <= threshold, files)
return filtered
def get_files(directory):
files = []
for file in [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]:
files.append( '{0}/{1}'.format(directory, file) )
return files
for file in get_recent_files("images", 0.900):
print(file)
答案 0 :(得分:2)
您可以使用os.path.getmtime
在Windows上的linux /创建日期按修改日期对文件进行排序sorted(get_files("."),key = os.path.getmtime,reverse = True)[:5]
只需获取文件名称:
[os.path.split(x)[1] for x in sorted(get_files("."),key = os.path.getmtime,reverse = True)[:5]]
使用原始功能和阈值:
files = sorted(get_files("."), key=os.path.getmtime,reverse=True)
filtered = filter(lambda x: os.path.getmtime(files[0]) - os.path.getmtime(x) <= .09,files)
要匹配您的问题:
导入操作系统 来自datetime import datetime
def get_files(directory):
files = []
for file in [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory,f))]:
da = datetime.fromtimestamp(os.path.getmtime(file))
files.append( '{0}/{1}-{2}'.format(directory,file,da)) # add time from timestamp
return files
print sorted(get_files("."),key=lambda x: float(x.rsplit(":",1)[-1]),reverse = True)[:5] # sort based on seconds/milisecs
答案 1 :(得分:0)
获取文件列表及其犯罪(次数),然后对其进行排序:
a = [(os.path.getctime(f), f)for f in os.listdir(os.curdir)]
a.sort()
过滤在最近一个文件
的一秒内创建的文件的列表most_recent = a[-1][0]
b = [thing for thing in a if most_recent - thing[0] <= 1]