You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:32:00