按日期选择文件并包含文本,Python

时间:2018-07-02 14:29:06

标签: python datetime

我正在尝试在指定的时间范围内(如果其中包含特定的文本)在Windows中选择特定的文件。

for folderName, subfolders, filenames in os.walk(r'C:\User\Documents\Reports'):

    for file in filenames:
            if os.path.getmtime(file) < datetime.timedelta(days=31) AND if 'Summary' in file or 'Summaries' in file :
                    try: shutil.copy(os.path.join(folderName, file), r'C:\User\Documents\File_Selections')
                    except: 
                            print(folderName, file)

因此,我正在查看“报告”文件夹中上个月最后修改的每个文件,以及文件名是否包含“摘要”或“摘要”。然后,我想将每个文件复制到一个特定的文件夹并打印出结果。

我的主要问题是日期比较如何工作,以便仅选择上个月修改的文件?另外,我不确定在'if'语句中是否正确使用了AND运算符。

1 个答案:

答案 0 :(得分:2)

在关键字if之后,您不需要关键字andand是正确的。您正在选择目录中所有不超过一个月且文件包含“摘要”或“摘要”的文件

线
if os.path.getmtime(file) < datetime.timedelta(days=31) and 'Summary' in file or 'Summaries' in file:

将无法正常工作,因为os.path.getmtime()返回浮点数。

您需要做的是在调用total_seconds()之后使用datetime.timedelta。 例如,

if os.path.getmtime(file) < datetime.timedelta(days=31).total_seconds()

total_seconds()将返回datetime.timedelta值作为float