2010-06-18 80 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