python - 使用 readlines() 方法打开 python 文件
问题描述
此项目的文件夹包含一个纯文本文件,其中包含 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))
解决方案
我怀疑他们正在寻找的答案是
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
我认为您的代码中存在错误,因为如果序列中存在回车符,它们将进入变量 DNAsequence。在 Perl 中,这些是使用 "chomp" 删除的,或者可以通过 $_ =~ s/\n// 显式删除(或者在此例如 $line =~ s/\n//;)。“\n”的存在可能会使后续分析复杂化。
推荐阅读
- java - 这些错误信息是什么意思?(Java 摇摆)
- azure - 使用 Azure DevOps,如何将发布管道迁移到代码,类似于构建管道 yml?
- c++ - 如何将双端队列>>向量>>字节迭代到函数
- mysql - leftJoin 与同一个表返回比预期更多的记录(查询生成器)
- python - 如何使 ttk.Treeview 可编辑?
- android - 有没有办法通过 IDE for Flutter 查看可能的参数列表?
- regex - 使用正则表达式在模式之前使用匹配模式匹配带有千位分隔符的数字
- javascript - 如何在文档就绪时为按钮(类)提供活动悬停状态?
- javascript - 检查 webapp 是否安装了 React、Angular 或 Vue
- c - 为什么这个信号量卡住了