直接运行Python脚本正常,通过Bat调用时出现FileNotFoundError求助
解决Python脚本通过bat调用找不到XML文件夹的问题
这个问题我太熟了!本质就是运行脚本时的工作目录不一致搞的鬼,咱们一步步来解决:
问题根源
- 直接双击
.py文件运行时,Python的默认工作目录就是你脚本所在的文件夹,所以你写的\xml\(其实更规范的相对路径应该是xml/或者./xml/)能正确指向脚本旁边的xml文件夹。 - 但通过
.bat调用时,默认工作目录是你双击bat文件时的当前目录(比如桌面、文档文件夹),或者bat文件所在的目录(如果不是和脚本同目录的话),这时候\xml\会被解析成系统根目录下的xml文件夹,自然找不到!
两种可靠的解决方案
方案1:让Python脚本自己用绝对路径(推荐)
不管从哪里调用脚本,都让它自己定位到正确的xml文件夹,用os模块获取脚本的绝对路径再拼接:
import os # 获取当前脚本所在的文件夹绝对路径 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接xml文件夹的绝对路径 xml_folder_path = os.path.join(script_folder, "xml") # 之后用这个路径去读取文件,比如: for filename in os.listdir(xml_folder_path): if filename.endswith(".xml"): file_path = os.path.join(xml_folder_path, filename) # 处理你的XML文件
这种方法最稳妥,完全不依赖外部调用的工作目录。
方案2:修改bat文件,先切换到脚本目录再运行
如果不想改Python代码,就修改你的XML.bat,先切换到脚本所在的文件夹,再执行脚本:
@echo off # 替换成你脚本所在的实际文件夹路径,比如: cd /d "D:\Projects\YourXmlProject" python your_script_name.py pause
这里的/d参数是为了跨盘符切换目录(比如bat在C盘,脚本在D盘时也能生效),确保运行脚本时的工作目录和脚本所在目录一致。
额外注意点
检查你的目录结构是否正确,应该是这样的:
你的项目文件夹/ ├─ your_script.py └─ xml/ ├─ xxx.xml └─ yyy.xml
如果xml文件夹不在脚本同级目录,记得调整os.path.join里的路径参数哦。
内容的提问来源于stack exchange,提问作者Prime
相关产品推荐
相关产品推荐

