5

我有一个 python 脚本,它定义了在实验中进行的步骤definition.py,以及另一个执行实验的 python 脚本execute.py。我想将第一个文件视为数据而不是代码;执行实验时,会为其创建一个文件definition.py夹,并将其移动到该文件夹​​中,并且实验生成的任何数据也将保存在那里。

execute.py我打算打电话给

execute.py -f save_stuff_here -d this_is_the_definition.py

但我不确定实现这一目标的最佳方法是什么。关于 stackoverflow 的其他问题建议导入定义,但我认为这对我不起作用。我不能保证该定义在 中的某个地方PYTHONPATH,也不能保证该定义具有相同的名称。我宁愿不需要,因为用户应该提供该信息。

definition.py需要定义单个对象(动作列表),并且execute.py需要能够引用该对象。

我想要的理想行为是从toscript1.py path/to/script2.py返回一个值,其中是任意文件。script2.pyscript1.pypath/to/script2.py

可以做到吗?

4

3 回答 3

2

execfile带有显式globals字典的文件。您可以通过阅读globalsdict 来获取文件中定义的任何内容。如果您需要 Python 3 兼容性,您可以open使用文件、read内容和exec它们。

于 2013-07-11T03:44:07.800 回答
1

一旦 script2.py 完成运行,您是否需要将数据从 path/to/script2.py 发送到 script1.py?你试过了吗..?

脚本2.py

import os
data = "whatever"
os.system("python ..//..//script1.py %s" % data)

脚本1.py

import sys
data = sys.argv[1]
print "my data is: " + data
raw_input('enter to finish')
于 2013-07-11T07:02:07.197 回答
0

使用ossys您可以获取 python 程序的命令行参数并使用它们来执行另一个 python 程序

import sys
import os
filename = sys.argv[1]
os.system(filename)

这会将第一个 CLI 作为文件名输入并调用它,例如:

script1.py script2.py

将使 script1 调用 script2

于 2013-07-11T04:14:34.817 回答