擅长:python、mysql、java
<p>以下是我的建议:
首先创建一个字典,其中myarray的所有项都是键,值=0
然后,创建一个处理特定文件的函数。将整个文件作为文本加载,按“(开始(模型(”)将其拆分,并计算“tb_to_tb_evalue”的所有出现次数。将所有结果添加到字典中。
最后对所有文件运行此函数。
见下文:</p>
<pre><code>d={i:0 for i in myarray}
def readorfs(file):
t=open(file).read()
l=t.split(sep='begin(model(')[1:]
for i in l:
s=i[:i.find(')')]
if s in d:
d[s]+=i.count('tb_to_tb_evalue')
else:
d[s]=i.count('tb_to_tb_evalue')
for filename in all_files:
readorfs(filename)
</code></pre>
<p>您也可以在一个函数中运行所有文件,如下所示。在这种情况下,您必须在函数参数中插入myarray:</p>
<pre><code>def readorfs(myarray):
d={i:0 for i in myarray}
path = "data/orfs"
all_files = glob.glob(path + "/*.txt")
for filename in all_files:
t=open(file).read()
l=t.split(sep='begin(model(')[1:]
for i in l:
s=i[:i.find(')')]
if s in d:
d[s]+=i.count('tb_to_tb_evalue')
else:
d[s]=i.count('tb_to_tb_evalue')
return d
</code></pre>