用Python在Linux上高效地读取csv文件在Python中

问题描述:

以下是在windows下用于逐行读取csv文件的工作。用Python在Linux上高效地读取csv文件在Python中

f = open(filename, 'r') 

for line in f: 

尽管在将csv文件复制到Linux服务器时,它会失败。

应该提到的是,性能是一个问题,因为csv文件很大。因此,我在使用诸如strip之类的东西时担心字符串复制。

+0

'f = open(filename,'rt')'更好吗? – 2010-02-22 22:00:09

+0

我很好奇代码失败,如果你正在做一个split(),它应该和任一行结尾一样。我*可以认为会导致问题的唯一的东西就像是line [: - 1],但是你避免复制字符串,所以不能!除非你已经编译了没有通用换行支持的python ... – 2010-02-22 22:11:31

Python有适用于Windows,Linux和Mac行结尾内置支持:

f = open(filename, 'rtU') 

for line in f: 
    ... 

如果你真的想不想缓慢的字符串操作,你应该处理他们之前剥去文件。您可以使用dos2unix(可以在Debian软件包“tofrodos”中找到)或(更容易)使用FTP文本模式,它应该自动执行。

dos2unix实用程序将非常有效地执行此操作。如果文件很大,我会将该命令作为副本的一部分运行。

+0

这是一个很好的提示,尽管它不可​​能作为复制操作的一部分来完成,我需要它作为python代码。 – David 2010-02-22 22:00:41

如果性能很重要,为什么不使用csv.reader

+0

击败我0.001皮秒:-) – 2010-02-22 22:02:42

+0

@John Machin,你在找借口升级你的电脑吗? :) – 2010-02-22 22:07:11

嗯....你有csv文件,你正在使用Python,为什么不使用Python csv模块读取文件?

实际上,读取任何文件最有效的方式是在一个大的I/O。有没有足够的RAM来做到这一点,但I/O越少越好。