2016-02-04 45 views
0

追加txt文件,我創建了我需要放到txt文件的變量。我沒有成功。我的程序將創建標題信息,但是之後停止寫入文件。頂部循環是我的「訂單標題」,機器循環是我的「訂單詳細信息」。我試過調試,並從各個角度來看它。我無法弄清楚我做錯了什麼。該程序正在編寫所有的文本文件並追加XHORNO和XHCSNO。至於故障排除,我曾嘗試打印報表(print "header"print "detail"print "machine")驗證碼被擊中每個迴路預期。這種努力導致了正確的輸出。但是它不會將詳細的循環變量寫入文件。蟒蛇創建和使用循環和變量

for k, v in atlantic_billing.iteritems(): 
    # print "header" 
    #CREATE XHORNO 
    XHORNO = str(digits + counter) 
    print XHORNO 
    with open(XHORNO + ".txt", 'w') as order: 
     XHCSNO = k 
     machines = v 
     #create order header information 
     order.write(XHORNO+"\n") 
     order.write(XHCSNO+"\n") 
     line = 1 
     counter = counter + 1 
     for machine in machines : 
      try: 
       XDORNO = XHORNO 
       XDORSQ = line 
       line = line + 1 
       XDITD1 = ranpak_dict[machine]['MODEL'] 
       XDITD2 = ranpak_dict[machine]['SN'] 
       XDCAVC = ranpak_dict[machine]['TOTAL'] 
       order.write(XDORDQ + "\n") 
       order.write(XDITD1 + "\n") 
       success.append(machine) 
       lines = lines + 1 

      except : 
       issues.append(machine) 
       problems = problems + 1 

回答

3

與給定資料...每個循環越來越下降到的最佳答案:

lines = lines + 1 

然後拋出一個NameError因爲lines未定義(你把它叫做line之前)。由於您的except子句捕捉所有異常,程序悄悄地補充說,進入problems和移動上。

這就是爲什麼你應該嘗試儘可能具體地瞭解你在except條款趕上什麼錯誤,一個很好的例子。

編輯:......但我想應該還是寫的線在該點的文件?所以...可能還需要更多的信息。但絕對要縮小您的except以便更容易排除故障。

+0

'lines'實際上是初始循環上面創建的變量。然而,我刪除它只是爲了驗證它沒有引起問題,並沒有解決它。儘管感謝您對except語句的建議!我會牢記這一點。 – AlliDeacon

+0

@AlliDeacon完全消除「except」塊。如果您遇到的錯誤是您需要捕獲的錯誤,請將該錯誤添加到該單一類型的錯誤中。如果您需要處理更多錯誤,請將它們逐個添加到子句中。最終,希望你會得到導致問題的實際錯誤。 – glibdud

+0

非常感謝!我學到了新東西!我沒有意識到我可以使用這種方式。我發現了錯誤,並糾正了它。所有工作都應該如此。 – AlliDeacon