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

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:50:29