0

我在 C:\Desktop\A 中有一个 python 脚本“cost_and_lead_time.py”。此脚本导入 3 个其他脚本和一个“cost_model.json”文件,所有这些都在文件夹 A 中。

现在,我在 C:\Desktop\Model\Results 中有一个模拟结果。我在“call C:\Desktop\A\cost_and_lead_time.py”这个文件夹中有一个单行批处理文件,但是当它尝试打开 cost_model.json 文件时它返回一个错误。导入其他 3 个脚本似乎没有问题,因为这些脚本在打开 json 之前出现。

我的问题是,有没有办法将这个 cost_model.json 文件保存在该目录中并通过批处理文件运行脚本而不将 json 文件复制/粘贴到结果文件夹中?我能想到的唯一方法是在 python 脚本中硬编码文件的完整路径,但这对我来说并不理想。我正在寻找添加到批处理文件的代码,而不是 python 脚本。

谢谢

4

2 回答 2

1

bat 文件中的“cd 路径”或将此代码添加到 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 并重写静态路径

于 2013-07-26T17:24:22.727 回答
0

最终需要有某种方法来告诉你的脚本你需要处理什么。有多种方法可以做到这一点,但它真的只是需要发生。我认为在批处理文件中要做的最明显的事情是在运行 Python 脚本之前复制目标文件。

但是,更简洁的解决方案可能是将命令行参数带入 python 脚本(通过 sys.argv),它告诉脚本它需要处理哪个文件。

于 2013-07-26T17:16:10.307 回答