的Python:排序依照档案日期时间在更多的细节(Python: sort files by dat

2019-09-17 21:27发布

我使用Python 2.7在Ubuntu。 因为我有这样的创建成TXT苍蝇分裂秒的数字的脚本我怎么排序更详细顺序文件。 我国防部一个脚本,它可以找到的最古老和最年轻的文件,但它看起来像它只是第二,但不是毫秒进行比较。

我的打印输出:

output_04.txt                     06/08/12 12:00:18
output_05.txt                     06/08/12 12:00:18

-----------
oldest: output_05.txt    
youngest: output_05.txt
-----------

但最早的文件的正确顺序应该是“output_04.txt”。 任何专业知识知道吗? 谢谢!

更新 :谢谢大家。 我也尝试了所有的代码,但似乎不能有输出,我需要。 对不起球员,我也感谢大家。 但是,我的文件,如上面的例子具有相同的时间,因此,如果满日期,小时,分钟,秒都是一样的,它必须通过毫秒比较。 不是吗? 如果我错了纠正我。 感谢大家! 干杯!

Answer 1:

您可以使用os.path.getmtime(path_to_file)来获取文件的修改时间。

排序文件列表的一种方法是创建它们的一个列表os.listdir ,并得到每个人的修改时间。 你将有一个元组列表,你可以由元组(这将是修改时间)的第二个元素订购。

您还可以检查的分辨率os.path.getmtimeos.stat_float_times() 如果真后者返回然后os.path.getmtime返回一个浮点数(这表示你比秒更高的分辨率)。



Answer 2:

def get_files(path):
    import os
    if os.path.exists(path):
        os.chdir(path)
        files = (os.listdir(path))
        items = {}
        def get_file_details(f):
            return {f:os.path.getmtime(f)}
        results = [get_file_details(f) for f in files]
        for result in results:
            for key, value in result.items():
                items[key] = value
    return items

v = sorted(get_files(path), key=r.get)

get_files需要path作为参数,如果path存在,改变当前目录的路径和文件列表生成。 get_file_details债收益率最后修改时间的文件。

get_files返回与文件名作为密钥的字典,改性时间值。 然后在标准sorted被用于排序的值。 reverse参数可被传递给排序升序或降序。



Answer 3:

因为没有这样的信息,你不能比较的毫秒。

静(2)调用返回三个time_t的领域: - 访问时间 - 创建时间 - 最后修改时间

time_t的是表示的秒(不毫秒)1970年1月1日UTC的数量自00:00过去时,一个整数。

所以,你可以有最大的细节文件的时间是秒。 我不知道,如果一些文件系统提供更高的分辨率,但是你必须要在C特定的调用,然后编写包装在Python中使用它们。



Answer 4:

HI尝试下面的代码

# retrieve the file information from a selected folder
# sort the files by last modified date/time and display in order newest file first
# tested with Python24    vegaseat    21jan2006
import os, glob, time
# use a folder you have ...
root = 'D:\\Zz1\\Cartoons\\' # one specific folder
#root = 'D:\\Zz1\\*'          # all the subfolders too
date_file_list = []
for folder in glob.glob(root):
    print "folder =", folder
    # select the type of file, for instance *.jpg or all files *.*
    for file in glob.glob(folder + '/*.*'):
        # retrieves the stats for the current file as a tuple
        # (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
        # the tuple element mtime at index 8 is the last-modified-date
        stats = os.stat(file)
        # create tuple (year yyyy, month(1-12), day(1-31), hour(0-23), minute(0-59), second(0-59),
        # weekday(0-6, 0 is monday), Julian day(1-366), daylight flag(-1,0 or 1)) from seconds since epoch
        # note:  this tuple can be sorted properly by date and time
        lastmod_date = time.localtime(stats[8])
        #print image_file, lastmod_date   # test
        # create list of tuples ready for sorting by date
        date_file_tuple = lastmod_date, file
        date_file_list.append(date_file_tuple)

#print date_file_list  # test
date_file_list.sort()
date_file_list.reverse()  # newest mod date now first
print "%-40s %s" % ("filename:", "last modified:")
for file in date_file_list:
    # extract just the filename
    folder, file_name = os.path.split(file[1])
    # convert date tuple to MM/DD/YYYY HH:MM:SS format
    file_date = time.strftime("%m/%d/%y %H:%M:%S", file[0])
    print "%-40s %s" % (file_name, file_date)

希望这将有助于

谢谢



文章来源: Python: sort files by datetime in more details