查找最新名称的文件(YYYYMMDD.rar格式)

时间:2018-01-11 14:01:11

标签: python-3.x

我是一个使用python 3.6脚本的新手,根据他们的命名约定(YYYYMMDD.rar),我无法弄清楚如何在目录中找到最新文件。有小费吗?谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个代码示例,作为如何解决此问题的提示。

我假设以YYYYMMDD.rar格式指定的日期始终是有效日期。

import os
from datetime import datetime

def is_correct_file_format(text):
    """
    Checks if a specified text input is of the correct
    datetime format %Y%m%d.
    """
    try:
        return datetime.strptime(text, '%Y%m%d.rar')
    except ValueError:
        print(text, "is in wrong file format")
        return False

def get_list_of_datetime_files():
    """
    Main function. Goes through the files in a directory (the same
    folder that contains this .py script) and returns a list of
    file names that correspond to the format %Y%m%d.rar given in
    the function is_correct_file_format(text).
    """
    list_of_files_in_dir = os.listdir()
    return list(filter(is_correct_file_format, list_of_files_in_dir))

# WORKS for:
# 20180117.rar, 20180118.rar, 20150217.rar, etc.
#
# BUT NOT:
# somefile.rar, somefile.py, 201801.rar, 2018010.rar, 201801171.rar
print(list(get_list_of_datetime_files()))

简短说明:

  1. 模式%Y%m%dstrptime函数的含义细分:

    • %Y年份以世纪为十进制数。 1970年,1988年,2001年,2013年
    • %m月份为零填充十进制数。 01,02,...,12
    • %d作为零填充十进制数的月中的某一天。 01,02,...,31
  2. 除了使用strptime模块中的datetime功能外,您可能还想探索它对日期格式YYYYMMDD here的限制。在这个例子中,为了简单起见,我只使用了strptime

    1. 此外,os.listdir(path_to_some_directory)返回一个列表,其中包含路径path_to_some_directory指定的目录中的条目名称。
    2. 我希望这对你开始有用。