如何检索目录中最近创建的文件

时间:2014-08-23 14:24:57

标签: python arrays linux file directory

我想检索一个目录的最新创建文件的数组。每组文件都在同一时间段内创建 - 边距为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)

2 个答案:

答案 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]