代码之家  ›  专栏  ›  技术社区  ›  OdiumPura

基于日期时间列表创建文件夹结构

  •  0
  • OdiumPura  · 技术社区  · 3 年前

    我有一个日期时间格式的日期列表。此列表的日期范围为 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
                ...
             ...
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Talon    3 年前

    可以使用创建多个文件夹 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 这样,前面的数字可以更好地排序。