我正在尝试在指定的时间范围内(如果其中包含特定的文本)在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运算符。
答案 0 :(得分:2)
在关键字if
之后,您不需要关键字and
。 and
是正确的。您正在选择目录中所有不超过一个月且文件包含“摘要”或“摘要”的文件
线
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