如何在Python CSV解析函数中获取无扩展名文件名而非完整路径
问题描述
你有一个存放6个csv文件的文件夹,路径如下:
path = r'/Users/username/Documents/Lab/Datasets/FDA_Dataset'
你通过glob方法读取所有csv文件存入FDA_dataset变量:
FDA_dataset = glob.glob(path + "/*.csv")
你需要定义函数为每个csv文件生成DataFrame,输出字段名和对应无扩展名的数据集名称,期望输出格式示例:
field_1, dataset_melanoma field_2, dataset_melanoma field_3, dataset_melanoma ... field_1, dataset_breast field_2, dataset_breast field_3, dataset_breast
当前编写的函数如下:
def parse_csv(filename): df = pd.read_csv(filename, index_col=None, header=0) for col in df.columns: print(col, '\n,', filename) for x in FDA_dataset: print(parse_csv(x))
当前函数返回的是字段名+完整文件路径,需要处理filename变量得到无扩展名的文件名,实现目标输出格式。
解决方法
使用Python内置的os.path模块处理文件路径即可实现需求,修改后的完整代码如下:
import os import glob import pandas as pd path = r'/Users/username/Documents/Lab/Datasets/FDA_Dataset' FDA_dataset = glob.glob(path + "/*.csv") def parse_csv(filename): # 提取无扩展名的数据集名称 dataset_name = os.path.splitext(os.path.basename(filename))[0] df = pd.read_csv(filename, index_col=None, header=0) for col in df.columns: # 按要求格式输出 print(f"{col}, {dataset_name}") for x in FDA_dataset: parse_csv(x)
关键逻辑说明:
os.path.basename(filename):从完整文件路径中截取带扩展名的文件名,比如返回dataset_melanoma.csvos.path.splitext(xxx)[0]:将带扩展名的文件名拆分为「名称、扩展名」的元组,取第一个元素即可得到无后缀的数据集名称- 原代码中多余的换行符
\n和二次打印print(parse_csv(x))已移除,避免输出多余的空行和None值
内容的提问来源于stack exchange,提问作者Eve
相关产品推荐
相关产品推荐

