2016-10-11 5 views
-2

奇妙な問題関数が何回か呼び出されていることは知っていますが、どこで、なぜそれが起こったのかわかりません。なぜ私の関数はPythonをループしています

HERESに私のコード:

8 def getAccessSecretName(): 
    9   access_key = raw_input("Enter Access Key: ") 
10   secret_key = raw_input("Enter Secret Key: ") 
11   yourName = raw_input("Enter your name: ") 
12   print "Access Key: %s" % access_key 
13   print "Secret Key: %s" % secret_key 
14   print "Your full name is: %s" % yourName 
15   with open (tfVariables,"w") as text_file: 
16     text_file.writelines(['access_key = \"'+ access_key +'\"\nsecret_key = \"'+ secre t_key +'\"\n\n\n', 
17         'amis = {\n', 
18         ' ', 
19         'us-west-1 = '+ usWest1ami +'\n', 
20         ' ', 
21         'us-west-1 = '+ usWest2ami +'\n', 
22         ' ', 
23         '}']) 
24   return access_key, secret_key, yourName 

69 def makeMainTF(): 
70   NameTag,mcGroupTag,mcIPTag = makeNameMCTag() 
71   access_key, secret_key, yourName = getAccessSecretName() 
72   with open (tfFileName,"w") as text_file: 
73     text_file.writelines(['provider \"aws\" {\n', 
74          ' ', 
75           'access_key = \"${var.access_key}\"\n ', 
76          ' ', 
77           'secret_key = \"${var.secret_key}\"\n ', 
78          ' ', 
79           'region  = \"${var.access_key}\"\n ', 
80          '}\n\n\n', 
81          'resource \"aws_instance\" \"example\"  {\n', 
82           ' ', 
83          'ami = \"${lookup(var.amis, var.region) }\"\n', 
84           ' ', 
85           'instance_type = \"%s\" \n}' % instan ceType, 
86           '\n\n\n\n', 
87           'tags {\n', 
88           ' ', 
89           'Name = \"%s\"\n' % NameTag, 
90           ' ', 
91           'Multicast = \"%s,%s\"\n' % (mcGroupT ag,mcIPTag), 
92           ' ', 
93           #'Owner = \"%s\"' % " " % yourName, 
94           'Owner = \"%s\"' % yourName, 
95           '\n}\n\n\n']) 

だからここは私が起こることを期待するものです。コードを実行すると、ユーザーにそのアクセスキー、秘密キー、および名前を入力するよう促します。その後、ユーザーにそれを一度繰り返し、情報をファイルに書き込みます。両方の機能を呼び出すとどうなりますか?

Enter Access Key: key1 
Enter Secret Key: secret1 
Enter your name: chowpay 
Access Key: key1 
Secret Key: secret1 
Your full name is: chowpay 
newnumber = 68 
Name Tag: vlslabs67 
Multicast Tag: vlslabmc, 172.16.0.67 
Enter Access Key: key2 
Enter Secret Key: secret2 
Enter your name: chowpay2 
Access Key: key2 
Secret Key: secret2 
Your full name is: chowpay2 

キーと名前を2回入力するように促すメッセージが表示されます。これは私が関数を呼び出すために使用したすべてのものなので意味がありません:

getAccessSecretName() 
makeMainTF() 

ありがとう!


私は53行で、正しい機能を持つ上記のコードを修正しましたが、それは間違った関数makeTfVarsを追加するために再びgetAccessSecret ()、ないgetAccessSecret()

補正では、中に投稿されましたmakeMainTF()という質問は、質問にあると思われるものでした。

+3

あなたは、呼び出し元のコードから 'getAccessSecretNameを()'を呼び出すと、再び 'makeTfvars()'から、それが呼び出される場合、あなたは表示されませんされています。 – cdarke

+3

誰が 'getAccessSecret()'ですか? – essramos

+0

行番号もコピーしないでください。 – Julien

答えて

0

私はループの問題だと思ったのは、どのように私はPythonの変数が他の関数に渡されると思ったのかという問題でした。

doesntのこの

71: access_key, secret_key, yourName = getAccessSecretName() 

をしているように見えますが)getAccessSecretName(の関数から変数の値が利用可能^作る意味します。私の間違ったミス。代わりに、関数を再実行してユーザーに再度質問される値を取得することを意味します。

"修正" は

10 def getAccessSecretName(): 
**11   global access_key, secret_key, yourName** 

を追加し、これは私が他の関数で私の変数を使用してみましょう

71: access_key, secret_key, yourName = getAccessSecretName() 

の除去です。これが正しい方法であるかどうかはわかりませんが、それは私のために働いていました。より良い方法が何であるか聞いてください。

おかげで再び

関連する問題