2012-09-20 67 views
1

我有一個包含4196個元素的列表(列表),全部等於-1或1.我想要將列表導出到.txt文件。以下是我使用的代碼:我試圖將一個Python列表導出到一個.txt文件,但文本文件的行數太少

file = open('file.txt','w') 
for item in List: 
    print>>file, item 

由於某些原因,.txt文件只有2870個元素。 (同樣的事情發生了,當我嘗試導出列表的另一種方式,但我知道有4196元!)

感謝您的幫助,

扎克

+0

另外,在這種情況下是什麼'List'?您問題中的代碼無效 – moopet

+0

'print >> file.txt,item'行不是正確的語法。你的意思是'打印>>文件,項目'? (@moopet:他在文中提到List是4196個元素的列表) –

+0

@DavidRobinson它可能是,但由於我們沒有看到它被創建,其餘的代碼是狡猾的,它可能會被損壞 – moopet

回答

11

您需要關閉該文件。你不能從行數中簡單地分辨出來,但我預計文件的大小爲4096或8192,這暗示只有整數個塊被刷新。在你致電file.close()之後,應該寫下其餘的數據。

您可以使用with聲明close the file automatically

with open('file.txt','w') as file: 
    for item in List: 
     print>>file, item 
+0

我想你就在這裏(請參閱我上面的評論)。緩衝很可能是造成這些問題的原因(並且可以使用@ dm03514提出的上下文管理器來避免) – mgilson

+5

+1,上下文管理器始終是處理文件的最佳方式。值得注意的是,以這種方式使用''print''有點奇怪 - 並且3.x中的功能是不同的 - 由於這些原因,您可能需要使用''file.write()''這更清楚。 –

+0

是的,非常感謝!這工作。 – zss

-1

像這樣的事情?

List = open("file.txt").read() 
new = [] 
ff = open("new_file.txt", 'w') 
for i in List: 
    new.append(i) 
ff.write(str(new)) 
ff.close() 
+2

CapWords的名字通常是根據[PEP-8](http://www.python.org/dev/peps/pep-0008 /)另外值得注意的是,這是一種非常低效的方式來生成這樣一個列表(更好的是,列表comp,或者更好的''file.readlines()''會更好在這種情況下,選項會生成一個包含Python列表文字的文件,這不是我們想要的。 –

+0

這需要將文件讀入內存,這可能會導致大文件或低內存系統出現問題。 –

相關問題