用Python在Linux上高效地读取csv文件在Python中
以下是在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