我写了一些代码来读取文件中的数字。将其附加到变量,然后递增数字,以便下次运行时,文件中的数字将为+1。它似乎工作,除了它似乎增加两倍..例如这里是我的代码:
11 def mcIPNumber():
12 with open('mcIPlatest.txt', 'r+') as file:
13 NameNumber= file.read().replace('\n','')
14 NameNumber=int(NameNumber)
15 NewNumber= NameNumber+1
16 print "newnumber = %s" % NewNumber
17 file.seek(0)
18 file.write(str(NewNumber))
19 file.truncate()
20 return NameNumber
21
22 def makeNameMCTag():
23 NameNumber = mcIPNumber()
24 NameTag = "varName" + str(NameNumber)
25 print "Name Tag: %s" % NameTag
26 mcGroup = "varTagmc"
27 #IPNumber = 1
28 mcIP = "172.16.0.%s" % NameNumber
29 print ( "Multicast Tag: %s, %s" % (mcGroup,mcIP))
30
31
32 mcIPNumber()
33 makeNameMCTag()
但这是我的输出..请注意" NewNumber"被打印出来两次......由于某种原因"
newnumber = 2
newnumber = 3
Name Tag: varName2
Multicast Tag: varTagmc, 172.16.0.2
所以它正确地使我的varName2和我的IP 172.16.0.2(在文件中将我的初始编号增加1)但这意味着我第二次运行它..我得到了这个:
newnumber = 4
newnumber = 5
Name Tag: varName
Multicast Tag: varTagmc, 172.16.0.4
我的预期结果如下:
newnumber = 3
Name Tag: varName3
Multicast Tag: varTagmc, 172.16.0.3
知道为什么要循环吗?
谢谢!
(顺便说一下,如果你很好奇,我试图编写一些最终会为我的TerraForm实验室编写tf文件的代码)
答案 0 :(得分:5)
因此:
def makeNameMCTag():
NameNumber = mcIPNumber()
您正在从makeNameMCTag内部调用mcIPNumber,因此您不需要在第32行中明确地调用该方法。
可选地
def make_name_mc_tag(name_number):
NameTag = "varName" + str(name_number)
print "Name Tag: %s" % NameTag
...
make_name_mc_tag(mcIPNumber())
这里您将所需数据作为参数传递。