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

时间:2019-04-04 04:36:19

标签: python-3.x dataframe glob writefile create-directory

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

  

“输入文件\ P1_set1 \ Set1_Folder_1_File_1_Hour09.csv”-用于单个患者(此文件包含第9小时的患者(P1)读数)

类似地,每个患者有多个文件,每个患者文件被分组在每个文件夹下,如下所示

enter image description here

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

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

  

f =“输入文件\ 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文件,这些文件按每位患者的各自文件夹分组。下面的屏幕截图显示了转换后的文件应如何排列在输出文件夹(与输入文件夹相同的结构)中。请注意,“输出”文件夹已经存在(很容易创建一个您知道的文件夹) enter image description here

1 个答案:

答案 0 :(得分:2)

因此要使用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:]将x拆分为for循环

file_name = x.split('/')[-1] #if you want filename.csv

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