需求:1个文件下面有多个子文件夹,子文件夹下面有很多个Excel文件,每个Excel里面有多个sheet_name,根据sheet_name分别写到对应的csv文件。
代码如下
import os
import pandas as pd
base_dire = "./data/xxx"
result_file = './result/'
#遍历文件夹下所有文件及目录
for path,dir_list,file_list in os.walk(base_dire):
for file_name in file_list:
file_path = os.path.join(path,file_name)
df = pd.ExcelFile(file_path)
sheet_names = df.sheet_names
#有的文件中没有'患者信息',所以加了这个条件判断
if '患者信息' in sheet_names:
for sheet_name in sheet_names:
df_row = pd.read_excel(file_path, sheet_name=sheet_name)
csv_file_path = f'{result_file}{sheet_name}.csv'
#header=(not os.path.exists(csv_file_path)) 简单来说:就是第一次往文件添加数据,包含标题行,第二次不添加标题行;
df_row.to_csv(csv_file_path, mode='a', header=(not os.path.exists(csv_file_path)), index=False)
'''
总结:
mode='a' 往文件追加数据;index=False 去掉索引;
header=(not os.path.exists(csv_file_path)) header=False 表示第一行不是标题行,header=True 表示第一行是标题行;
os.path.exists() 返回boole值,文件不存在就返回False,存在返回True; not 是取反的意思,表示第一次往文件添加数据的时候,
文件不存在,返回False,取反就是True,header=True 表示第一行是标题行,第二次在添加数据的时候,文件存在就是True,取反就是False,
header=False 表示第一行不是标题行,第二次就不写入标题行了。
'''
结果
reference
1.python to_csv追加Dataframe 表头重复问题
https://blog.csdn.net/qq_41562377/article/details/108661459?utm_source=app&app_version=4.15.2&utm_source=app



