如何用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
相关产品推荐
相关产品推荐

