使用readlines()方法打开python文件

时间:2018-11-22 12:13:40

标签: python python-3.x python-requests jupyter-notebook

此项目的文件夹包含一个纯文本文件,该文件带有一个Fasta格式的DNA序列('MYH7.fasta')。

使用readlines()方法完成以下单元格的打开和读取文件,并将序列保存到名为DNAsequence的字符串中。

注意:要完成的零件用“ ...”表示。其他部分不应更改。

inFile = ...

DNAsequence = ''

for ... in ...:

 if not(">" in Line):

if (len(Line) > 0):

 DNAsequence = DNAsequence + Line

print(DNAsequence)

print(len(DNAsequence))

1 个答案:

答案 0 :(得分:0)

我怀疑他们正在寻找答案

inFile = open("MYH7.fasta", "r").readlines()

在Perl中,连接代码是标准的(下面的示例)。我不确定在这里,因为inFile.readlines()应该基于回车符构造一个数组,并且您问题中的不变代码不允许使用其功能。以下代码回答了您的问题,使文件句柄保持打开状态,并省略了readlines()。

#!/usr/local/bin/python3
inFile = open("MYH7.fasta", "r")

DNAsequence = ''

for Line in inFile:
    if not(">" in Line):
        if (len(Line) > 0):
            DNAsequence = DNAsequence + Line

print(DNAsequence)

print(len(DNAsequence))

Perl版本显示了如何在一行中串联多个命令。

#!/usr/bin/perl
my $DNAsequence;
open (IN, "<MYH7.fasta");
while (my $line = <IN>){
    chomp $line;
    next if $line =~ m/>/;
    $line =~ m/[ACGT]{10}/i ? $DNAsequence .= $line : next;
   }
close IN;
print $DNAsequence, "\n", length($DNAsequence) . " and Python s\*\*ks\n";

MYH7.fasta输入文件的格式为

>example_sequence
ACGCGTAGACGTATAG

我认为您的代码中存在错误,因为如果序列中包含回车符,那么它们将进入变量DNA序列。在Perl中,可以使用“ chomp”将其删除,也可以使用$ _ =〜s / \ n //(或例如$ line =〜s / \ n //)将其删除。 “ \ n”的存在可能会使后续分析变得复杂。