Python 在不同目录中运行py脚本的bat文件
我在C:\Desktop\a中有一个python脚本“cost\u and\u lead\u time.py”。该脚本导入3个其他脚本和一个“cost\u model.json”文件,所有这些都在文件夹a中 现在,我在C:\Desktop\Model\Results中有一个模拟结果。我在这个文件夹中有一个单行批处理文件“call C:\Desktop\a\cost\u and\u lead\u time.py”,但它在尝试打开cost\u model.json文件时返回一个错误。在导入其他3个脚本时,与打开json之前的脚本一样,似乎没有问题 我的问题是,有没有办法将这个cost_model.json文件保存在该目录中,并在批处理文件中运行脚本,而不将json文件复制/粘贴到results文件夹中?我能想到的唯一方法是在python脚本中硬编码文件的完整路径,但这对我来说并不理想。我正在寻找添加到批处理文件的代码,而不是python脚本Python 在不同目录中运行py脚本的bat文件,python,batch-file,Python,Batch File,我在C:\Desktop\a中有一个python脚本“cost\u and\u lead\u time.py”。该脚本导入3个其他脚本和一个“cost\u model.json”文件,所有这些都在文件夹a中 现在,我在C:\Desktop\Model\Results中有一个模拟结果。我在这个文件夹中有一个单行批处理文件“call C:\Desktop\a\cost\u and\u lead\u time.py”,但它在尝试打开cost\u model.json文件时返回一个错误。在导入其他3个脚
谢谢最终需要有某种方法来告诉您的脚本您需要处理什么。有很多种方法可以做到这一点,但它确实需要实现。我认为在批处理文件中要做的最明显的事情是在运行Python脚本之前将目标文件复制到位
然而,一个更简洁的解决方案可能是在python脚本中引入一个命令行参数(通过sys.argv),该参数告诉脚本需要处理哪个文件。bat文件中的“cd path”,或者将此代码添加到python执行的文件中
import os,sys
path = os.path.abspath(os.path.dirname(__file__))
os.chdir(path) #for relative files
sys.path.insert(0,path) #for modules load
解析os.chdir之前的参数时,必须使用os.path.abspath将传递给脚本的工作文件路径重写为。或者不使用chdir并重写静态路径如何打开cost_model.json文件?它是否假定它在当前工作目录中?如果是,请修复它。请显示您的.BAT代码。我特别想看看它是如何为python脚本指定json文件的名称来加载它的。