Python用os.walk遍历文件时os.path.join报tuple类型TypeError问题问询
错误原因
- 核心报错来自
os.walk()的错误使用:os.walk()遍历目录时每次迭代返回的是三元组(当前目录路径, 子目录列表, 文件列表),你直接将整个元组传入os.path.join(),触发了类型不匹配错误。 - 额外逻辑问题:
- 循环内重复读取同一个Excel文件,属于无效的重复IO操作,应该放到循环外执行
- 代码中
with open(...)的逻辑完全没有实际用途,且你要处理的是zip二进制文件,用r模式打开本身就会出错 zipfile.ZipFile.extractall()没有返回值,赋值给img后打印只会输出None- 当前遍历路径是工作目录
os.getcwd(),和你声明的要处理的./CODEX/input/路径不匹配
修复后的代码
from pathlib import Path import pandas as pd import zipfile import os # 你要处理的目标路径 target_path = "./CODEX/input/" # 提前读取抗体信息Excel,避免循环内重复读取 ab = pd.read_excel("HUBMAP B004 codex antibodies metadata.xlsx") # TODO: Rename antibody_name column so that it matches channelNames.txt # 遍历目标路径下所有文件 for root, dirs, files in os.walk(target_path): for filename in files: # 仅处理zip格式文件 if filename.endswith(".zip"): # 拼接得到zip文件的完整路径 zip_full_path = os.path.join(root, filename) # 解压zip到目标路径 with zipfile.ZipFile(zip_full_path, 'r') as zip_ref: zip_ref.extractall(target_path) print(f"已完成解压:{zip_full_path}")
内容的提问来源于stack exchange,提问作者melololo
相关产品推荐
相关产品推荐

