【问题标题】:Automatically save files in a particular folder using python使用python自动将文件保存在特定文件夹中
【发布时间】:2021-09-28 20:13:46
【问题描述】:

我有一个熊猫数据框df,看起来像这样:

user    date        lat         lon
Peter   2019-03-04  37.749798   -122.492301
Peter   2019-03-04  37.751028   -122.492291
Peter   2019-03-04  37.751698   -122.491701
Peter   2019-03-04  37.751800   -122.489748
David   2019-03-04  38.122893   -122.242051
David   2019-03-04  38.124108   -122.239079
David   2019-03-04  38.127434   -122.238672
Emma    2019-03-04  37.893635   -122.076538
Joyce   2019-03-04  37.536206   -121.997080
Joyce   2019-03-04  37.538044   -121.993153
Joyce   2019-03-04  37.540443   -121.991415

使用下面的循环,我可以创建四个单独的 .html 文件,这些文件以 user 列中的用户命名(Peter.htmlDavid.htmlEmma.htmlJoyce.html)并显示坐标Folium 地图上的每位用户。

def create_user_map(user):
    #create the map
    return map

for user in users:
    user_map = create_user_map(user)
    user_file = f"{user}.html"
    user_map.save(user_file)

现在我想使用 python 将这些文件自动存储在下面的文件夹结构中。如何扩展上面的循环来实现这一点?

Report/
├── Reports per date/ 
│   ├── 2019-03-01/
│   ├── 2019-03-02/
│   ├── 2019-03-03/
│   └── 2019-03-04/
│        └── Users/
│            └── Peter/
│                └── Peter.html
│            └── David/
│                └── David.html
│            └── Emma/
│                └── Emma.html
│            └── Joyce/
│                └── Joyce.html
│
└── Reports per month/

【问题讨论】:

    标签: python file directory directory-structure


    【解决方案1】:

    首先,您必须创建目录,您可以按如下方式自动执行此操作:

    import os
    
    directories = ["Reports", "Reports/Reports per date"]
    for directory in required_directories: # check if the directory exists
        if not os.path.isdir(directory):
            os.mkdir(directory) # create the directory
    
    

    你还需要为日期做同样的事情:

    from datetime import datetime
    
    date = datetime.today().strftime("%Y-%m-%d") # just an example for date
        if not os.path.isdir(f"Reports/Reports per date/{date}"):
            os.mkdir(directory) # create the directory
    '''
    Then for each user, you need to create the directory, then save the file:
    '''
    for user in users:
        user_map = create_user_map(user)
        
        if not os.path.isdir(f"Reports/Reports per date/{date}/{user}"):
            os.mkdir(directory) # create the directory
    
        user_file = f"Reports/Reports per date/{date}/{user}/{user}.html"
        user_map.save(user_file)
    

    把所有东西放在一起:

    import os
    from datetime import datetime
    
    def create_user_map(user):
        #create the map
        return map
    
    # initialize directories
    directories = ["Reports", "Reports/Reports per date"]
    for directory in required_directories: 
        if not os.path.isdir(directory):
            os.mkdir(directory)
    
    # initialize date directory
    date = datetime.today().strftime("%Y-%m-%d") 
        if not os.path.isdir(f"Reports/Reports per date/{date}"):
            os.mkdir(directory) 
    
    # for each user create the map then save html file
    for user in users:
        user_map = create_user_map(user)
        
        if not os.path.isdir(f"Reports/Reports per date/{date}/{user}"):
            os.mkdir(directory)
    
        user_file = f"Reports/Reports per date/{date}/{user}/{user}.html"
        user_map.save(user_file)
    
    

    【讨论】:

      【解决方案2】:

      我假设您在某些时候已经提取了每个条目的日期,可能是在您创建地图时,所以我们将该变量称为“user_date”

      import os
      
      for user in users:
          user_map = create_user_map(user)
          if os.direxists('./%/'%(user_date)):
              user_file = f"./%s/{user}.html"%(user_date)
          else:
              os.mkdir('./%/'%(user_date))
              user_file = f"./%s/{user}.html"%(user_date)
          user_map.save(user_file)
      

      这应该为每个日期创建目录(如果它不存在),设置 user_file,然后保存它。

      【讨论】:

        猜你喜欢
        • 2021-06-13
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多