我在Perl6中有一个基本的脚本,它的运行速度非常慢,比确切的perl5翻译慢30倍。
CONTROL {
when CX::Warn {
note $_;
exit 1;
}
}
use fatal;
role KeyRequired {
method AT-KEY (\key) {
die "Key {key} not found" unless self.EXISTS-KEY(key);
nextsame;
}
}
for dir(test => /^nucleotide_\d**2_\d**2..3\.tsv$/) -> $tsv {
say $tsv;
my $qqman = $tsv.subst(/\.tsv$/, '.qqman.tsv');
my $out = open $qqman, :w;
put "\t$qqman";
my UInt $line-no = 0;
for $tsv.lines -> $line {
if $line-no == 0 {
$line-no = 1;
$out.put(['SNP', 'CHR', 'BP', 'P', 'zscore'].join("\t"));
next
}
if $line ~~ /.+X/ {
next
}
$line-no++;
my @line = $line.split(/\s+/);
my $chr = @line[0];
my $nuc = @line[1];
my $p = @line[3];
my $zscore = @line[2];
my $snp = "'rs$line-no'";
$out.put([$snp, $chr, $nuc, $p, $zscore].join("\t"));
#$out.put();
}
last
}
这在Perl5的< code>while中是惯用的。
这是一个非常简单的脚本,它只更改文件中的文本列。这个Perl6脚本在30分钟内运行。Perl5翻译在1分钟内运行。
我试过用Perl6读处理一个大的文本文件,太慢了。(2014-09)和Perl6:处理非常大的文件的最好方法是什么?但是我在这里看不到任何可以帮助我的东西
我运行的是< code > Rakudo 2018.03版,构建于moar VM 2018.03版之上,实现了Perl 6.c.
我意识到Rakudo还没有成熟到Perl5的水平(我希望还没有),但我如何让它在更合理的时间范围内逐行读取文件?
有很多事情我会改变。
/。X/
可以简化为/。X/
或甚至$line.substr(1)。包含('X')
$line。words
$tsv.subst(/\.tsv$/,'.qqman.tsv')
可以简化为$tsv。substr(*-4)~'.qqman。tsv'
uint
而不是uint
给定。头{}
而不是{last}given dir(test => /^nucleotide_\d**2_\d**2..3\.tsv$/).head -> $tsv {
say $tsv;
my $qqman = $tsv.substr(*-4) ~ '.qqman.tsv';
my $out = open $qqman, :w;
put "\t$qqman";
my uint $line-no = 0;
for $tsv.lines -> $line {
FIRST {
$line-no = 1;
$out.put(('SNP', 'CHR', 'BP', 'P', 'zscore').join("\t"));
next
}
next if $line.substr(1).contains('X');
++$line-no;
my ($chr,$nuc,$zscore,$p) = $line.words;
my $snp = "'rs$line-no'";
$out.put(($snp, $chr, $nuc, $p, $zscore).join("\t"));
#$out.put();
}
}
我试图在Perl6中逐行读取一个巨大的gz文件。 我正在尝试做这样的事情 但是这会给出一个错误,我有一个格式不正确的UTF-8。我看不到如何从帮助页面读取gzip材料https://docs.perl6.org/language/unicode#UTF8-C8或https://docs.perl6.org/language/io 我想完成和在Perl5中一样的事情:http://blog-en .
问题内容: 在史前时代(Python 1.4)中,我们做到了: 在Python 2.1之后,我们做到了: 在Python 2.3中获得便利的迭代器协议之前,它可以做到: 我看过一些使用更详细的示例: 这是首选的方法吗? [edit]我知道with语句可以确保关闭文件…但是为什么文件对象的迭代器协议中没有包含该语句呢? 问题答案: 偏爱以下原因的确有一个原因: 我们都为CPython的相对确定性的引
问题内容: 在Java 8中,我看到在Files类中添加了一个名为lines()的新方法,该方法可用于在Java中逐行读取文件。它适用于大文件吗?我的意思是我们可以先加载1000行,然后加载第二组1000行。我有1GB的大文件,能用吗? 有人可以分享代码段的用法吗? 问题答案: 它适用于大文件吗?[…]我有1GB的大文件,能用吗? 据我所知,它也应适用于大文件(但我没有尝试过): 我的意思是我们可
问题内容: 我在Go中找不到功能。我可以弄清楚如何快速编写一个,但是我只是想知道我是否在这里忽略了一些东西。如何逐行读取文件? 问题答案: _注意: 可接受的答案在早期的Go版本中是正确的。 包中有ReadLine函数。 请注意,如果该行不适合读取缓冲区,则该函数将返回不完整的行。如果要始终通过单次调用函数来读取程序中的整行,则需要将该函数封装到自己的函数中,该函数在for循环中进行调用。 之所以
问题内容: 我想遍历整个文件的每一行。一种方法是读取整个文件,将其保存到列表中,然后遍历感兴趣的行。此方法占用大量内存,因此我正在寻找替代方法。 到目前为止,我的代码: 执行此代码将显示错误消息:。 有什么建议么? 目的是计算成对的字符串相似度,这意味着对于文件中的每一行,我要计算每隔一行的距离。 问题答案: 正确的,完全Python的读取文件的方法如下: 该with语句处理文件的打开和关闭,包括
问题内容: 我有一些代码可以从pdf文件中读取。有没有一种方法可以在Windows上使用Pypdf,Python 2.6从pdf文件(不是页面)逐行读取? 这是阅读pdf页面的代码: 更新: 呼叫代码是这样的: 问题答案: 看起来您拥有的是要逐行解释的大量文本数据。 您可以使用StringIO类将该内容包装为可搜索的类似文件的对象: 对于您的情况,请执行以下操作: