我越来越多地使用python而不是perl但有一个问题:总是当我想逐行处理大文件(> 1GB)时,python似乎需要花费很长时间来完成perl所做的工作。时间。然而,网上的一般观点似乎是python应该至少与perl一样快速进行文本处理。所以我的问题是我做错了什么?
示例:
逐行读取文件,在每个选项卡上拆分行,并将第二个项目添加到列表中。 我的python解决方案看起来像这样:
with open() as infile:
for line in infile:
ls = line.split("\t")
list.append(ls[1])
perl代码如下所示:
open(my $infile,"<",file_path);
while(my $line=<$infile>){
my @ls = split(/\t/,$line);
push @list, $ls[1]
}
close($infile)
有没有办法加快速度?
并说清楚:我不想开始平常的#34; [填写脚本语言A的名称]比[填写脚本语言B]更好[&34]。线。我想更多地使用python这对我的工作来说是一个真正的问题。
有什么建议吗?
答案 0 :(得分:1)
有没有办法加快速度?
是的,import the CSV in SQLite and process it there。在您的情况下,您需要.mode tabs
而不是.mode csv
。
使用任何编程语言来操作CSV文件都会很慢。 CSV是数据传输格式,而不是数据存储格式。由于您不断地重新处理和重新处理CSV文件,因此它们总是很慢而且难以使用。
将其导入SQLite将使其成为一种更加高效的索引数据格式。这将花费与Python相同的时间,但只需要完成一次。它可以使用SQL进行处理,这意味着可以编写,调试和维护更少的代码。