2013-05-16 130 views
1

我有這個功能,需要一個列表,並把它打印輸出到OUTFILE:在每一個元組後打印輸出格式

def writeToFile(files): 

for path2 in files: 
    fi= open(fileo, 'w') 
    fi.truncate() 
    fi.write('\n' + str(foundFiles2)) 
    fi.close() 


foundFiles2 = [ 
'bb.TechnicalDefinition.UnitTests.vbproj' 
'bb.Units.UnitTests.vbproj' 
'bb.Utilities.UnitTests.vbproj' 
'bb.Visualization.UnitTests.vbproj' ] 

它打印到文件中沒有任何問題,但是我想它打印一個新行名單。然而,當寫入文件時,它看起來是這樣的:

'bb.APDS.UnitTests.vbproj', 'bb.DatabaseAPI.UnitTests.vbproj', 'bb.DataManagement.UnitTests.vbproj', 

我認爲

fi.write('\n' + str(foundFiles2)) 

會單獨打印出的每個元組在新行,但事實並非如此。我是否需要在這裏的某個循環或者我的語法錯誤?

回答

1

您應該遍歷列表,而不是打印它的str版本。

>>> lis = [1,2,3] 
>>> str(lis)  #str just returns a string representation of the string 
'[1, 2, 3]' 
>>> for x in lis : #use for loop to iterate over individual items of the list 
...  print x 
...  
1 
2 
3 

代碼:

for path2 in files: 
    #"w" mode automatically truncates the file for you 
    # Always use `with` statement for handling files, it automatically 
    # closes the file.  
    with open(fileo,"w") as f:  
     for text in foundFiles2: #iterate over each value in the list 
      f.write(text+"\n") 
+0

你真棒,非常感謝你!完美的作品 – bbesase

+0

@bbesase很高興幫助。 :) –

1

打開for循環之前該文件並關閉後的for循環的文件(或使用with像阿什維尼建議,因爲它會自動執行的是)

按照這種方式,它只會反覆寫入相同的foundFiles2列表,具體取決於files中有多少個索引。

如果foundFiles2是要遍歷,那麼你需要使用它在for聲明名單:

for item in foundFiles2: 
    fi.write(item+'\n') 

這將轉到第一個項目,然後寫出來,然後第二個項目然後寫出來等等。