如何删除子目录中早于x天且未在Python中周日创建的所有文件

如何删除子目录中早于x天且未在Python中周日创建的所有文件,python,python-3.x,cron,Python,Python 3.x,Cron,我想找到一个解决方案,删除子目录中的所有文件以及早于x天的文件,如果文件是在周日创建的,则不应删除该文件 我的主文件夹路径是C:\Main\u Folder,在我的结构中 +---Sub_Folder_1 | Day1.xlsx | Day2.xlsx | Day3.xlsx | +---Sub_Folder_2 | Day1.xlsx | Day2.xlsx | Day3.xlsx | \---Sub_Folder_3

我想找到一个解决方案,删除子目录中的所有文件以及早于x天的文件,如果文件是在周日创建的,则不应删除该文件

我的主文件夹路径是C:\Main\u Folder,在我的结构中

+---Sub_Folder_1
|       Day1.xlsx
|       Day2.xlsx
|       Day3.xlsx
|
+---Sub_Folder_2
|       Day1.xlsx
|       Day2.xlsx
|       Day3.xlsx
|
\---Sub_Folder_3
        Day1.xlsx
        Day2.xlsx
        Day3.xlsx
我尝试了下面的代码,但它甚至删除了子目录

import os, shutil
folder = 'C:\\Main_Folder\\'
for the_file in os.listdir(folder):
    file_path = os.path.join(folder, the_file)
    try:
        if os.path.isfile(file_path):
            os.unlink(file_path)
        elif os.path.isdir(file_path): shutil.rmtree(file_path)
    except Exception as e:
        print(e)

为了检查文件上次编辑的时间,需要包括两个库<代码>导入操作系统路径、时间

首先要考虑的是要从文件中使用哪个字段,例如:

print("Last Modified: %s" % time.ctime(os.path.getmtime("file.txt")))
# Last Modified: Mon Jul 30 11:10:21 2018
print("Created: %s" % time.ctime(os.path.getctime('file.txt')))
# Created: Tue Jul 31 09:13:23 2018
<> P>所以你必须解析这行,寻找比X日期更大的字段。考虑通过字符串查看星期值的
Sun、Mon、Tue、Wed、Thur、Fri、Sat

fileDate = time.ctime(os.path.getmtime('file.txt'))
if 'Sun' not in fileDate:
  # Sun for Sunday is not in the time string so check the date and time

您必须循环遍历子目录中的文件,检查创建的时间或上次修改的时间(以您喜欢的时间为准),然后解析字符串中的日期和时间字段,并与您的案例进行比较,删除那些似乎适合删除的文件。

为了检查文件上次编辑的时间,您需要包含两个库<代码>导入操作系统路径、时间

首先要考虑的是要从文件中使用哪个字段,例如:

print("Last Modified: %s" % time.ctime(os.path.getmtime("file.txt")))
# Last Modified: Mon Jul 30 11:10:21 2018
print("Created: %s" % time.ctime(os.path.getctime('file.txt')))
# Created: Tue Jul 31 09:13:23 2018
<> P>所以你必须解析这行,寻找比X日期更大的字段。考虑通过字符串查看星期值的
Sun、Mon、Tue、Wed、Thur、Fri、Sat

fileDate = time.ctime(os.path.getmtime('file.txt'))
if 'Sun' not in fileDate:
  # Sun for Sunday is not in the time string so check the date and time

您必须循环遍历子目录中的文件,检查创建的时间或上次修改的时间(以您喜欢的时间为准),然后解析字符串中的日期和时间字段,并与您的案例进行比较,删除那些你认为适合删除的内容。

我喜欢你的elaboration@Xavid谢谢你的回答,我面临的另一个问题是,它就像是在删除子目录本身,我想确保只删除文件和文件夹本身,如何处理这个问题,所以os库有两个很好的功能,os.isfile(currentPathHere)和os.isdir(currentPathHere)。这两个是布尔函数,您可以使用它们,如果isdir为true,则更改路径以查看此文件夹的内容,并重复此过程。你可以让它成为一个递归函数,递归地进入每个文件夹,从根开始向内查看文件,删除那些符合你标准的文件elaboration@Xavid谢谢你的回答我面临的另一个问题就像是删除子目录本身,我想确保只删除文件和文件夹本身,以及如何实现这一点,因此os库有两个很好的函数,os.isfile(currentPathHere)和os.isdir(currentPathHere)。这两个是布尔函数,您可以使用它们,如果isdir为true,则更改路径以查看此文件夹的内容,并重复此过程。您可以将其设置为递归函数,从根目录开始递归地进入每个文件夹,并查看文件,删除符合条件的文件。