Python循环中如何获取标识符对应的文件名而非标识符本身?
Python循环中如何获取标识符对应的文件名而非标识符本身?
嘿,我来帮你解决这个问题~你现在遇到的核心问题是想在循环里根据数字x来调用对应的file_1、file_2变量,但Python没法直接通过字符串形式的变量名去获取变量值,咱们一步一步来理清楚:
首先先指出你原代码里的几个小问题,这些也会影响运行结果:
- 字典初始化写错了,应该是
python = dict()或者更简洁的python = {},不是dic() - 循环逻辑用错了,你想遍历1到2的数字,应该用
for x in range(1,3):(别忘了加冒号),而不是while循环 - 读取xlsx文件应该用
pd.read_excel(),不是pd.read_csv(),后者是用来读csv格式的 - 路径里的反斜杠要注意:
"C:\Users\doc"里的\U会被Python当成Unicode转义字符,建议用raw字符串r"C:\Users\doc"或者双反斜杠"C:\\Users\\doc"来避免解析错误
接下来是核心问题的解决办法:你不能直接通过file_x这种形式去调用file_1或file_2,Python会把它当成一个新的变量名(而这个变量根本不存在),所以才会出现奇怪的拼接结果。正确的做法是把文件名统一放到列表或字典里,循环的时候直接取对应的元素:
方案一:用列表存储文件名(推荐,适合顺序遍历)
import pandas as pd # 用raw字符串避免路径转义问题 source = r"C:\Users\doc" # 把文件名按顺序放到列表里,对应你要的1、2索引 file_names = ["abc.xlsx", "hig.xlsx"] python = {} # enumerate可以同时拿到从1开始的索引和对应的文件名 for idx, filename in enumerate(file_names, start=1): # 拼接完整路径,也可以用os.path.join(source, filename)更通用 full_path = f"{source}\\{filename}" # 读取xlsx文件 python[idx] = pd.read_excel(full_path)
方案二:用字典存储文件名(适合自定义索引)
如果你的索引不是连续的数字,或者想更明确对应关系,可以用字典:
import pandas as pd source = r"C:\Users\doc" # 直接把索引和文件名对应起来 file_map = { 1: "abc.xlsx", 2: "hig.xlsx" } python = {} for key, filename in file_map.items(): full_path = f"{source}\\{filename}" python[key] = pd.read_excel(full_path)
这样运行后,python[1]就会对应"C:\Users\doc\abc.xlsx"的文件内容,完全符合你的预期啦~
备注:内容来源于stack exchange,提问作者Wei Ling Lian
相关产品推荐
相关产品推荐

