簡體   English   中英

不知道為什么我的python輸出循環

[英]Not sure why my python output is looping

我寫了一些代碼來讀取文件中的數字。 將其追加到變量,然后遞增數字,以便下次運行文件中的數字時將為數字+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文件)

因為這:

 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())

在這里,您將傳遞所需的數據作為參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM