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

如何用Python 3获取不含扩展名的文件列表?解决TypeError报错

解决提取不含.csv扩展名的股票代码列表问题

嘿,我来帮你搞定这个问题!你遇到的TypeError其实很好理解:strip()是单个字符串的方法,但os.listdir()返回的是一个文件名字符串的列表,直接把列表丢给strip()肯定会报错——你得遍历列表里的每个文件名,逐个处理才行。下面给你几个简单有效的解决方案:

方案1:用os.path.splitext(最推荐,适配所有扩展名场景)

os.path.splitext是Python标准库专门用来拆分文件名和扩展名的工具,它会把每个文件名拆成「主名+扩展名」的元组,取第一个元素就是你要的股票代码:

import os

files = os.listdir("C:/Users/sp500/")
# 遍历文件列表,提取不含扩展名的部分,同时过滤非CSV文件
stock_codes = [os.path.splitext(file)[0] for file in files if file.endswith('.csv')]

这里的if file.endswith('.csv')是个保险措施,能避免误处理目录或者其他格式的文件,确保只保留CSV对应的股票代码。

方案2:用字符串replace方法(简单直接,适合固定扩展名)

如果你能100%确定所有文件都是.csv结尾,直接替换掉扩展名也很方便:

import os

files = os.listdir("C:/Users/sp500/")
stock_codes = [file.replace('.csv', '') for file in files if file.endswith('.csv')]

方案3:用字符串rsplit方法(应对文件名含多个点的情况)

如果遇到文件名里有多个点的特殊情况(比如XYZ.old.csv),用rsplit从右往左拆分一次,能精准拿到最后一个点前面的内容:

import os

files = os.listdir("C:/Users/sp500/")
stock_codes = [file.rsplit('.', 1)[0] for file in files if file.endswith('.csv')]

这三个方案都能解决你的问题,其中方案1是最通用的,不管后续扩展名有没有变化都能正常工作。

内容的提问来源于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:31:17