假设您有50个文件(在同一个文件夹中),每个文件在搜索开始时都包含字符“>;”。例如:
File1.txt
>organism1
>organism2
>organism3
>organism4
>organism5
File2.txt
>organism3
>organism4
>organism5
>organism6
我的目的是计算每个文件中每个有机体的频率并生成一个表。 此时,我逐个文件计算每个文件以生成表:
Table 1.
Frequency
organism1 1
organism2 1
organism3 2
organism4 2
organism5 2
organism6 1
到目前为止,我可以列出文件夹中的所有文件,但无法打开它们,使我想要的。你知道吗
import sys
from Bio import SeqIO
import glob, os
os.chdir(sys.argv[1])
file_list = []
for file in glob.glob("*.faa"):
if file not in file_list:
file_list.append(file) # until here, perfect
for f in file_list:
infile = open(f, 'r')
fasta = SeqIO.parse(infile, 'fasta')
seq = fasta.description #.split("|")[2]
print seq
问题是当我试图打开文件列表中的文件时。你知道吗
<generator object parse at 0x7f76867c7a00>
<generator object parse at 0x7f76867c7a50>
<generator object parse at 0x7f76867c7a00>
<generator object parse at 0x7f76867c7a50>
你在使用
SeqIO.parse()
,好像它是SeqIO.read()
,这是行不通的。SeqIO.parse()
返回生成器,因为它从文件生成多个结果:这适用于我的环境python3.6.0;biopython1.69。在我的环境中,您的代码生成错误:
而不是产生任何产出。我知道你在运行Python2.7,但哪个是Biopython?你知道吗
为什么要从
glob()
的结果中筛选重复项?你知道吗相关问题 更多 >
编程相关推荐