不知道为什么我的python输出是循环的

cho*_*pay 0 python loops

我写了一些代码来读取文件中的数字.将其附加到变量,然后递增数字,以便下次运行时,文件中的数字将为+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()
Run Code Online (Sandbox Code Playgroud)

但这是我的输出..注意"NewNumber"被打印出两次......出于某种原因"

newnumber = 2
newnumber = 3
Name Tag: varName2
Multicast Tag: varTagmc, 172.16.0.2
Run Code Online (Sandbox Code Playgroud)

所以它正确地使我的varName2和我的IP 172.16.0.2(在文件中增加了我的初始数字1)但这意味着我第二次运行它..我得到这个:

newnumber = 4
newnumber = 5
Name Tag: varName
Multicast Tag: varTagmc, 172.16.0.4
Run Code Online (Sandbox Code Playgroud)

我的预期结果是这样的:

newnumber = 3
Name Tag: varName3
Multicast Tag: varTagmc, 172.16.0.3
Run Code Online (Sandbox Code Playgroud)

知道为什么循环吗?

谢谢!

(顺便说一句,如果你很好奇,我正在尝试编写一些代码,最终会为我的TerraForm实验室编写tf文件)

e4c*_*4c5 5

因为这:

 def makeNameMCTag():
     NameNumber = mcIPNumber()
Run Code Online (Sandbox Code Playgroud)

您正在从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())
Run Code Online (Sandbox Code Playgroud)

在这里,您将所需的数据作为参数传递.