动态创建文件夹并将 csv 文件写入该文件夹

Create folders dynamically and write csv files to that folders

我想从一个文件夹中读取几个输入文件,执行一些转换,即时创建文件夹并将 csv 写入相应的文件夹。这里的重点是我的输入路径就像

"Input files\P1_set1\Set1_Folder_1_File_1_Hour09.csv" - for a single patient (This file contains readings of patient (P1) at 9th hour)

同样,每个患者都有多个文件,每个患者文件都分组在每个文件夹下,如下所示

因此,为了读取每个文件,我使用通配符正则表达式,如下面的代码所示

我已经尝试使用 glob 包并且能够成功读取它,但在创建输出文件夹和保存文件时遇到问题。我正在解析文件字符串,如下所示

f = "Input files\P1_set1\Set1_Folder_1_File_1_Hour09.csv"

f[12:] = "P1_set1\Set1_Folder_1_File_1_Hour09.csv"

filenames = sorted(glob.glob('Input files\P*_set1\*.csv'))
for f in filenames:
   print(f)     #This will print the full path
   print(f[12:]) # This print the folder structure along with filename
   df_transform = pd.read_csv(f)
   df_transform = df_transform.drop(['Format 10','Time','Hour'],axis=1)
   df_transform.to_csv("Output\" + str(f[12:]),index=False)

我希望输出文件夹包含 csv 文件,这些文件按每个患者分组在各自的文件夹下。下面的屏幕截图显示了转换后的文件在输出文件夹中的排列方式(与输入文件夹的结构相同)。请注意“输出”文件夹已经存在(创建一个你知道的文件夹很容易)

因此,要读取文件夹中的文件,请使用 os 库,然后您可以执行

import os
folder_path = "path_to_your_folder"
dir = os.listdir(folder_path)
for x in dir:
    df_transform = pd.read_csv(f)
    df_transform = df_transform.drop(['Format 10','Time','Hour'],axis=1)
    if os.path.isdir("/home/el"):
        df_transform.to_csv("Output/" + str(f[12:]),index=False)
    else:
        os.makedirs(folder_path+"/")
        df_transform.to_csv("Output/" + str(f[12:]),index=False)    

现在代替用户 f[12:] 像

那样在 for 循环中拆分 x
file_name = x.split('/')[-1] #if you want filename.csv

让我知道这是否是您想要的