【发布时间】:2013-03-23 19:39:20
【问题描述】:
我有 1000 个 .txt 文件,我在这些文件上运行此代码。我要做的是在文件中找到 ENSG 的最大值,并删除其他小于最大值的 ENSG 值。然后我必须通过查看 utr 长度从同一文本文件中找到最小值并将其保存在我的 output.txt 文件中。我想要 1 个 output.txt 文件中的 1000 个 .txt 文件的输出。此代码几乎可以正常工作,但它会覆盖结果。它只显示最后一个文件的结果:
import glob
f2 = glob.glob("./*.txt")
all_text=""
for fpath in f2:
f = open(fpath,"r")
list_lines = f.readlines()
dic={}
sent="ENSG"
temp_list=[]
for line in list_lines:
all_text=all_text+line
name= line.rsplit()[0].strip()
score=line.rsplit()[1].strip()
dic[name]=score
for i in dic.keys():
if sent in i:
temp_list.append(dic[i])
hiegh_score=max(temp_list)
def check(index):
reverse_text=all_text[index+1::-1]
index2=reverse_text.find("\n")
if sent==reverse_text[:index2+1][::-1][1:len(sent)+1]:
return False
else:
return True
list_to_min=dic.values()
for i in temp_list:
if i!=hiegh_score:
index=all_text.find(str(i))
while check(index):
index=all_text.find(str(i),index+len(str(i)))
all_text=all_text[0:index]+all_text[index+len(str(i)):]
list_to_min.remove(str(i))
file2=open("my_try4.txt","w")
file2.write(all_text)
min_score= min(list_to_min)
for j in dic.keys():
if min_score==dic[j]:
k="min score is :"+str(min_score)+" for person "+j
file2.write(k)
print "%6d : %s" % (len(list_lines),fpath)
file2.close()
f.close()
我有这样的文本文件
4.txt:
ENSBTAG00000020679 197
ENSCAFG00000009872 2585
ENSG00000018236 1935
ENSG00000018236 230
ENSG00000018236 257
ENSG00000018236 338
ENSG00000018236 922
ENSG00000018236 922
ENSRNOG00000004438 14
ENSRNOG00000004438 14
现在它应该选择 1935 的 ENSG 并删除 ENSG 的所有其他值。现在文本文件应该如下所示:
ENSBTAG00000020679 197
ENSCAFG00000009872 2585
ENSG00000018236 1935
ENSRNOG00000004438 14
ENSRNOG00000004438 14
现在,通过查看这个文本文件,我们找到了最短的值并将其保存在一个文本文件中(我们对 1000 个文件执行此操作,并且输出应该在 1 个文件上)。
output.txt
textfile4 14
【问题讨论】:
-
你的缩进正确吗?您的
open处于循环中,close处于最大范围内。 -
你的问题很难理解,你的代码更难理解。你能改写吗?为什么选择“14”? (无论如何,这里的“选定”是什么意思?)您想要每个文件的一组最大的“ENSG”前缀值,然后是该组最大值中的最小值吗?
-
@FrancisAvila 希望你现在能理解我的代码和解释
-
@FrancisAvila 不,最小值不应该来自
ENSG的最大值集合,它来自我们找到最大ENSG的同一个文本文件,并删除@的所有其他数据987654335@ 的值小于最大值,然后从剩余数据中找到最小值,当我们找到最小值时,我们将其保存到输出文件
标签: python python-2.7 python-3.x