通过.bat运行Python主脚本时,解决exec调用子脚本找不到文件的问题
解决Python脚本调用同目录文件找不到的问题
这个问题的核心是当前工作目录不匹配:当你双击bat文件运行时,Python的默认工作目录并不是HelloWorld.py所在的Desktop\Test文件夹,而是bat文件的启动目录(通常是你的用户主目录),所以open("GoodMorning.py")会去错误的目录找文件,自然报找不到的错误。
你有两种靠谱的解决方式,选哪种都可以:
方法1:修改HelloWorld.py(推荐,更灵活)
让Python脚本自己获取自身所在的目录,然后用绝对路径去打开GoodMorning.py,这样不管你从哪个目录运行脚本,都能找到目标文件。修改后的代码如下:
import os # 获取当前脚本HelloWorld.py所在的绝对目录 script_directory = os.path.dirname(os.path.abspath(__file__)) # 拼接同目录下GoodMorning.py的完整路径 target_script_path = os.path.join(script_directory, "GoodMorning.py") exec(open(target_script_path).read())
方法2:修改.bat文件
先切换到HelloWorld.py所在的目录,再运行Python脚本,这样Python的工作目录就和脚本目录一致了,直接用相对路径就能找到文件。修改后的bat内容:
cd /d "C:\Users\myself\Desktop\Test" "C:\Users\myself\AppData\Local\Programs\Python\Python38-32\python.exe" "HelloWorld.py" pause
这里的cd /d是为了确保即使bat文件不在同一个磁盘分区,也能顺利切换目录。
内容的提问来源于stack exchange,提问作者dats




