2016-10-15 8 views
0

別のスクリプトから現在のスクリプトに変数を呼び出そうとしていますが、「変数が定義されていません」という問題が発生しています。他のスクリプトの変数を現在のスクリプトに呼び出す

botoGetTags.py

20 def findLargestIP(): 
21   for i in tagList: 
22     #remove all the spacing in the tags 
23     ec2Tags = i.strip() 
24     #seperate any multiple tags 
25     ec2SingleTag = ec2Tags.split(',') 
26     #find the last octect of the ip address 
27     fullIPTag = ec2SingleTag[1].split('.') 
28     #remove the CIDR from ip to get the last octect 
29     lastIPsTag = fullIPTag[3].split('/') 
30     lastOctect = lastIPsTag[0] 
31     ipList.append(lastOctect) 
32     largestIP = int(ipList[0]) 
33     for latestIP in ipList: 
34       if int(latestIP) > largestIP: 
35         largestIP = latestIP 
36   return largestIP 
37   #print largestIP 
38 
39 if __name__ == '__main__': 
40   getec2Tags() 
41   largestIP = findLargestIP() 
42   print largestIP 

私は関数のいずれかを実行する前に、このスクリプトは^正しく

terraform.py

1 import botoGetTags 
    8 largestIP = findLargestIP() 

largestIPの値を返しますが、私の他のスクリプトで私のスクリプトでは、terraTFgen.py、私は得る:

Traceback (most recent call last): 
    File "terraTFgen.py", line 8, in <module> 
    largestIP = findLargestIP() 
NameError: name 'findLargestIP' is not defined 

私は別のスクリプトをインポートすると、私の現在のスクリプトでこれらの変数を使うことができると思いました。

ありがとうございました

答えて

2

モジュールはインポートされていますが、機能はインポートされていません。だから、モジュールを介して関数を参照する必要があります。

import botoGetTags 
largestIP = botoGetTags.findLargestIP() 

代わりにあなたが直接機能をインポートできます。

from botoGetTags import findLargestIP 
largestIP = findLargestIP() 
+0

素晴らしいおかげで動作します。どの方法がより良いエチケットと考えられていますか? – chowpay

+1

本当に厳しいルールはありません.PEP8は推奨しません。それは、それぞれが特定の状況でどれくらい読みやすいかによって異なります。いくつかの場所は家のスタイルを持っていますが - たとえばGoogleでは常にモジュールをインポートする必要があります。 –

関連する問題