奇怪的问题我知道一个函数被调用了两次,但我不知道它发生的地点或原因。
继承我的代码:
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
请注意,它会提示用户输入两次密钥及其名称。哪个没有意义,因为这是我用来调用函数的全部内容:
getAccessSecretName()
makeMainTF()
谢谢!
我已经使用第53行中的正确函数更正了上面的代码,它是getAccessSecret 名称(),而不是getAccessSecret()
对于添加错误函数再次进行更正makeTfVars已在问题中发布,但makeMainTF()是,假设在问题中。
答案 0 :(得分:0)
我认为循环中的一个问题是我如何认为python中的变量传递给其他函数的问题。
看起来像这样做
71: access_key, secret_key, yourName = getAccessSecretName()
并不意味着可以从getAccessSecretName()函数获取make ^变量值。我愚蠢的错误。相反,它意味着重新运行该函数以获取导致用户再次被问到问题的值。
“修复”正在添加
10 def getAccessSecretName():
**11 global access_key, secret_key, yourName**
并删除
71: access_key, secret_key, yourName = getAccessSecretName()
这让我在其他函数中使用我的变量。不确定这是否是正确的方法,但它对我有用。欢迎聆听更好的方式。
再次感谢