根据日期时间列表创建文件夹结构

Create folder structure based on a datetime list

我有一个日期时间格式的日期列表。此列表的日期范围在 datetime(2018, 1, 1)datetime(2020, 12, 31) 之间。

我使用以下代码遍历此列表:

 for day in days:
       # code snippet to get data from each day

我的疑问是:如何在我的循环中使用 os.mkdir() 来创建如下所示的文件夹结构

    data
       2018
          Jan
            2018-01-01.csv
            2018-01-02.csv
            ...
          Feb
            2018-02-01.csv
            2018-02-02.csv
            ...
          ...
          ...
      2019
         Jan
           ...
         Feb
           ...
         ...
      2020
         Jan
            ...
         Feb
            ...
         ...

您可以使用os.makedirs创建多个文件夹,如果该文件夹已经存在,它也可以忽略。

for day in days:
    path = day.strftime("%Y/%b")
    os.makedirs(path, exist_ok=True)
    # write your file to path/filename

或者例如:

for day in days:
    path = day.strftime(os.path.join("%Y", "%b", "%Y-%m-%d.csv"))
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, "w") as file:
        file.write("Your Data Here")

可以找到 strftime 的可能占位符 on this handy site。您可能会发现更改中间文件夹名称很有用,因为月份名称不能很好地按字母顺序排列,因此您可能希望将其更改为 %m %b,以便前面的数字可以更好地排序。