Python使用字典遍历不同文件名创建多数据库的方法及报错解决
报错原因
TypeError: 'str' object cannot be interpreted as an integer 报错的核心原因是Python内置的
range()函数仅支持接收整数参数生成整数序列,你传入了字符串类型的路径标识,不符合函数入参要求。
正确实现方案
你不需要用glob工具,直接把两个路径的可变标识0NN、1AQ存入列表/字典遍历即可,同时注意读取tsv格式文件需要指定分隔符为制表符,单文件读取完成后即可提取指定元素写入Excel:
循环+字典实现(符合你的需求)
import pandas as pd # 字典存储映射关系:key为路径标识,value为对应文件的完整路径 file_dict = { "0NN": "C:/Users/User/Documents/Research/STITCH/0NN-human-STITCH/stitch.tsv", "1AQ": "C:/Users/User/Documents/Research/STITCH/1AQ-human-STITCH/stitch.tsv" } # 可选:如果需要保留所有文件的全量数据,可初始化列表存储 df_list = [] for tag, file_path in file_dict.items(): # 读取当前tsv文件,指定制表符为分隔符 current_df = pd.read_csv(file_path, sep='\t') df_list.append(current_df) # 替换为你自己的指定元素筛选逻辑 target_data = current_df[current_df["你需要筛选的列名"] == "指定元素"] # 单文件提取结果写入Excel,文件名加标识避免覆盖 target_data.to_excel(f"{tag}_提取结果.xlsx", index=False) # 所有文件读取完成后如果需要合并全量数据,再执行concat即可 full_df = pd.concat(df_list, ignore_index=True)
注意事项
- 注意路径标识
0NN的首字符是数字0,不是字母O,避免拼写错误导致找不到文件 - 你原有代码里把
pd.concat放在循环内部会重复执行合并操作,建议放到所有文件读取完成后再执行,提升运行效率 - 如果需要把所有文件的提取结果写入同一个Excel的不同sheet,可以用
pd.ExcelWriter实现,避免多次写入覆盖文件
内容的提问来源于stack exchange,提问作者jack22321
相关产品推荐
相关产品推荐

