批量读取目录文件生成独立列表遇报错,求解决方案
批量读取目录文件并处理的代码优化问题
需求
读取指定目录下的所有文件,将每个文件内容经clean_data处理后存入独立列表。
原重复实现代码
my_file = open("/content/txts/txt1.txt", "r") data = my_file.read() l1 = clean_data(data) my_file = open("/content/txts/txt2.txt", "r") data = my_file.read() l2 = clean_data(data) my_file = open("/content/txts/txt3.txt", "r") data = my_file.read() l3 = clean_data(data) my_file = open("/content/txts/txt4.txt", "r") data = my_file.read() l4 = clean_data(data)
尝试的优化代码(存在错误)
import os pathToFolder = '/content/txts' fileList = os.listdir(pathToFolder) dataDict = {} for i in range(len(fileList)-1): with open(fileList[i],"r") as f: data = f.read() dataDict['l' + str(i)] = clean_data(data) f.close()
错误分析与修复方案
问题点1:文件路径错误
os.listdir()返回的是目录内的文件名,而非完整路径。直接用fileList[i]打开文件会在当前工作目录查找,而非目标目录/content/txts,导致文件找不到。
问题点2:遍历范围错误
range(len(fileList)-1)会跳过最后一个文件,应该遍历全部文件。
问题点3:多余的手动关闭文件
with语句会在代码块结束后自动关闭文件,无需调用f.close()。
问题点4:未过滤非文件项
目录中可能存在子目录,直接打开会报错,需先判断是否为文件。
修正后的代码
import os pathToFolder = '/content/txts' dataDict = {} # 遍历目录下所有项 for idx, filename in enumerate(os.listdir(pathToFolder)): # 拼接完整文件路径 file_path = os.path.join(pathToFolder, filename) # 仅处理文件(跳过子目录) if os.path.isfile(file_path): with open(file_path, "r") as f: data = f.read() # 用索引或文件名作为字典键,存储处理后的数据 dataDict[f'l{idx+1}'] = clean_data(data)
额外优化建议
如果想直接用文件名作为键(更直观),可以修改字典键的赋值:
dataDict[filename] = clean_data(data)
内容的提问来源于stack exchange,提问作者CodeBunnyღ
相关产品推荐
相关产品推荐

