将数据从一个python文件返回到另一个python文件的最佳方法

时间:2013-07-11 03:35:48

标签: python

我有一个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是任意文件。

可以吗?

3 个答案:

答案 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)

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

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

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

script1.py script2.py

将使script1调用script2