Python文件比perl慢的文件:我做错了什么?

时间:2017-03-18 06:02:52

标签: python perl

我越来越多地使用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这对我的工作来说是一个真正的问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

  

有没有办法加快速度?

是的,import the CSV in SQLite and process it there。在您的情况下,您需要.mode tabs而不是.mode csv

使用任何编程语言来操作CSV文件都会很慢。 CSV是数据传输格式,而不是数据存储格式。由于您不断地重新处理和重新处理CSV文件,因此它们总是很慢而且难以使用。

将其导入SQLite将使其成为一种更加高效的索引数据格式。这将花费与Python相同的时间,但只需要完成一次。它可以使用SQL进行处理,这意味着可以编写,调试和维护更少的代码。

请参阅Sqlite vs CSV file manipulation performance