以下是在windows下用於逐行讀取csv文件的工作。用Python在Linux上高效地讀取csv文件在Python中
f = open(filename, 'r')
for line in f:
儘管在將csv文件複製到Linux服務器時,它會失敗。
應該提到的是,性能是一個問題,因爲csv文件很大。因此,我在使用諸如strip之類的東西時擔心字符串複製。
以下是在windows下用於逐行讀取csv文件的工作。用Python在Linux上高效地讀取csv文件在Python中
f = open(filename, 'r')
for line in f:
儘管在將csv文件複製到Linux服務器時,它會失敗。
應該提到的是,性能是一個問題,因爲csv文件很大。因此,我在使用諸如strip之類的東西時擔心字符串複製。
Python有適用於Windows,Linux和Mac行結尾內置支持:
f = open(filename, 'rtU')
for line in f:
...
如果你真的想不想緩慢的字符串操作,你應該處理他們之前剝去文件。您可以使用dos2unix(可以在Debian軟件包「tofrodos」中找到)或(更容易)使用FTP文本模式,它應該自動執行。
dos2unix實用程序將非常有效地執行此操作。如果文件很大,我會將該命令作爲副本的一部分運行。
這是一個很好的提示,儘管它不可能作爲複製操作的一部分來完成,我需要它作爲python代碼。 – David 2010-02-22 22:00:41
如果性能很重要,爲什麼不使用csv.reader
?
擊敗我0.001皮秒:-) – 2010-02-22 22:02:42
@John Machin,你在找藉口升級你的電腦嗎? :) – 2010-02-22 22:07:11
嗯....你有csv文件,你正在使用Python,爲什麼不使用Python csv模塊讀取文件?
實際上,讀取任何文件最有效的方式是在一個大的I/O。有沒有足夠的RAM來做到這一點,但I/O越少越好。
'f = open(filename,'rt')'更好嗎? – 2010-02-22 22:00:09
我很好奇代碼失敗,如果你正在做一個split(),它應該和任一行結尾一樣。我*可以認爲會導致問題的唯一的東西就像是line [: - 1],但是你避免複製字符串,所以不能!除非你已經編譯了沒有通用換行支持的python ... – 2010-02-22 22:11:31