2010-06-18 81 views
2

之间的信息我已经在两个不同位置的两个Python脚本,不能移动。什么是送两个脚本之间信息的最佳方式是什么?蟒蛇:发送两个脚本

说例如在script1.py我有一个字符串,例如

x = 'teststring'

然后我需要变量'x'传递给script2.py,它将变量'x'保存到文本文件中?

任何想法?

+0

你是什么意思是“不同的位置”吗? – 2010-06-18 03:13:54

回答

3

你刚才导入。

#script2.py 
from script1 import x 

为了使SCRIPT2找到SCRIPT1,该SCRIPT1文件必须在module search path

编辑

下面是一个例子:

首先我们创建一个目录,并显示模块搜索路径的值:

$mkdir some_dir 
$echo $PYTHONPATH 

这是理智最多。然后,我们创建在该目录初始化为“HOLA”变量x文件:

$cat >some_dir/module_a.py <<. 
> x = "hola" 
> . 

我们创建另一个Python文件使用它:

$cat >module_b.py<<. 
> from module_a import x 
> print x 
> . 

如果我们运行第二个脚本,我们得到错误:

$python module_b.py 
Traceback (most recent call last): 
    File "module_b.py", line 1, in <module> 
    from module_a import x 
ImportError: No module named module_a 

但是,如果我们指定some_dir在模块搜索路径,并重新运行,应该工作:

$export PYTHONPATH=some_dir 
$python module_b.py 
hola 
+0

会的工作,即使脚本是在两个不同的位置? – Peter 2010-06-18 03:00:01

+0

@彼得:)我知道这将是下一个问题,我正在寻找参考。我已经更新了答案。对于一个(位)更完整的示例,请参阅:http://stackoverflow.com/questions/3066126/python-sending-a-variable-to-another-script/3066158#3066158 – OscarRyz 2010-06-18 03:00:56

+0

而不是修改PYTHONPATH,你可能想改为在需要使用其他文件的程序中,将路径附加到sys.path中的some_dir。这样做的好处是不需要为单个项目修改PYTHONPATH。 – EOL 2010-06-18 10:06:44

0

这里是这样做的标准方式,你想要什么:

import sys 
sys.path.append('/path/to/the_other_module_dir') 
import script1 

print script1.x 

事实上,如果你修改环境变量PYTHONPATH每个单个项目涉及不在同一个目录中的模块,则会产生不必要的长PYTHONPATH变量脚本的用户也将不得不修改其PYTHONPATH。上述规范的方法解决了这些问题。

或者,你可能想直接导入x

from script1 import x 
print x