for循环读取文件已识别文件名仍报no such file or directory错误如何解决?
错误原因
os.listdir(path)的返回值仅为指定路径下的纯文件名,不会包含你传入的路径前缀- 你当前运行代码的工作目录(Colab默认工作目录为
/content)和你指定的path路径不匹配,pd.ExcelFile()直接接收纯文件名时,只会在当前工作目录下查找文件,因此触发文件不存在的报错。打印文件名正常只是说明你指定的path路径下确实存在该文件,不代表当前工作目录下有该文件。
修复方案
推荐使用路径拼接的方式处理,不需要修改全局工作目录,兼容性更强:
import os import pandas as pd # 替换为你自己的目标路径,Colab挂载云盘后通常为/content/drive/MyDrive/开头的路径 target_path = "你的目标路径" for file_name in os.listdir(target_path): # 过滤非xlsx格式的文件,避免目录、其他格式文件引发额外报错 if file_name.endswith(".xlsx"): print(file_name) # 拼接得到文件的完整路径 full_file_path = os.path.join(target_path, file_name) xlsx = pd.ExcelFile(full_file_path)
如果确实需要保持原有传纯文件名的写法,可以切换工作目录到目标路径,该方案不推荐,会修改全局工作目录,可能影响后续其他路径相关代码的运行:
import os import pandas as pd target_path = "你的目标路径" # 切换当前工作目录到目标路径 os.chdir(target_path) for file_name in os.listdir(target_path): if file_name.endswith(".xlsx"): print(file_name) xlsx = pd.ExcelFile(file_name)
内容的提问来源于stack exchange,提问作者SRed2
相关产品推荐
相关产品推荐

