Python中移除文件列表内文件扩展名问题求助
解决获取不带扩展名的文件列表问题
哦,我明白你遇到的问题了!os.listdir()返回的是一个文件名的列表,但os.path.splitext()只能处理单个字符串,这就是你看到TypeError: expected str, bytes or os.PathLike object, not list错误的原因。别担心,咱们可以用几种简单的方式解决这个问题:
方法1:使用for循环逐个处理
通过遍历列表里的每个文件名,单独调用os.path.splitext()来移除扩展名:
import os # 获取目录下的所有文件/目录 files = os.listdir("C:/Users/sp500/") tickers = [] for file in files: # 只处理.csv格式的文件,避免子目录或其他格式文件干扰 if file.endswith('.csv'): # 提取不带扩展名的部分 ticker = os.path.splitext(file)[0] tickers.append(ticker) print(tickers)
方法2:用列表推导式简化代码
如果喜欢更简洁的写法,列表推导式可以一行完成筛选和处理:
import os files = os.listdir("C:/Users/sp500/") # 仅保留.csv文件,并提取不带扩展名的部分 tickers = [os.path.splitext(file)[0] for file in files if file.endswith('.csv')] print(tickers)
方法3:用pathlib(推荐,更现代的路径处理)
Python 3.4及以上版本推荐使用pathlib模块,它的API更直观,还能直接筛选指定格式的文件:
from pathlib import Path # 定义目标目录路径 dir_path = Path("C:/Users/sp500/") # 筛选所有.csv文件,直接获取不带扩展名的文件名(stem属性) tickers = [file.stem for file in dir_path.glob('*.csv')] print(tickers)
小提示:添加
if file.endswith('.csv')或者用glob('*.csv')的原因是,确保只处理目标格式的文件,避免目录中存在子目录或其他格式文件时出现异常。
内容的提问来源于stack exchange,提问作者Giladbi
相关产品推荐
相关产品推荐

