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

Windows环境下Python自动排序脚本报错:字符串索引必须为整数

错误解释与代码修复

错误含义

TypeError: string indices must be integers 这个错误表示:你试图用字符串类型的值作为索引去访问另一个字符串的元素,但字符串仅支持整数类型的索引(比如用contents[0]取第一个字符),用字符串当索引不符合语法规则,因此触发该错误。

代码问题分析

你的代码里导致错误的核心原因是对文件内容的处理逻辑错误:

  1. contents = f.read() 将目标文本文件的内容读取成了一个完整的字符串,包含所有行文本和换行符。
  2. for file_name in contents: 这段代码是在遍历这个字符串的每一个单个字符,而不是遍历文件里的每一行文件名。
  3. 随后的contents[file_name]中,file_name是单个字符(比如'3'、'm'),你用它作为索引去访问contents字符串,违反了字符串索引必须是整数的规则,因此报错。

修复方案

需要将文件内容按行分割为文件名列表,再遍历列表处理每个文件名:

修改后的关键代码片段

# Open the file and read its contents, split into non-empty lines
with open(file_path, 'r') as f:
    # 按行读取,去除每行的空白字符,同时过滤空行
    contents = [line.strip() for line in f if line.strip()]

# ... 其他代码保持不变 ...

# Find file
for file_name in contents:
    # 直接传入file_name即可,不需要再用contents[file_name]
    print(find_files(file_name, cwd))

额外优化提示

原代码中os.walk的循环变量dir建议改为dirs(复数形式),这是os.walk的标准参数命名(对应当前目录下的子目录列表),虽然不影响功能,但更符合代码规范:

for root, dirs, files in os.walk(search_path):

内容的提问来源于stack exchange,提问作者Limyx826

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:46:05