我有一个python脚本,它定义了实验definition.py
的步骤,以及另一个执行实验execute.py
的python脚本。我想将第一个文件视为数据而不是代码;当执行实验时,会为其创建一个文件夹,definition.py
将被移动到该文件夹中,并且实验中生成的所有数据也会保存在该文件夹中。
我打算将execute.py
称为
execute.py -f save_stuff_here -d this_is_the_definition.py
但我不确定实现这一目标的最佳方法是什么。关于stackoverflow的其他问题建议导入定义,但我不认为这对我有用。我无法保证定义位于PYTHONPATH
中的某个位置,也不保证定义具有相同的名称。我不想这样做,因为用户应该提供这些信息。
definition.py
需要定义单个对象(操作列表),execute.py
需要能够引用该对象。
我希望理想的行为是script1.py path/to/script2.py
将值从script2.py
返回到script1.py
,其中path/to/script2.py
是任意文件。
可以吗?
答案 0 :(得分:2)
execfile
该文件带有明确的globals
字典。您可以通过阅读globals
dict获取文件中定义的任何内容。如果您需要兼容Python 3,则可以open
文件,read
内容和exec
。
答案 1 :(得分:1)
一旦script2.py完成运行,您是否需要从path / to script2.py向script1.py发送数据? 你试过了吗..?
script2.py
import os
data = "whatever"
os.system("python ..//..//script1.py %s" % data)
script1.py
import sys
data = sys.argv[1]
print "my data is: " + data
raw_input('enter to finish')
答案 2 :(得分:0)
使用os
和sys
你可以获得python程序的命令行参数并使用它们来执行另一个python程序
import sys
import os
filename = sys.argv[1]
os.system(filename)
这将把第一个CLI作为文件名输入并调用它,例如:
script1.py script2.py
将使script1调用script2