|
1鱼币
%%time
z=0
i=0
dictcvrcvs={}
chr1 = open('/Users/guoshuyu/Downloads/DMR_info/CG/control_vs_R-48h/c vs Rresult.txt', 'r')
chr2 = open('/Users/guoshuyu/Downloads/DMR_info/CG/control_vs_S-48h/c vs Sresult.txt', 'r')
for Line1 in chr1.readlines():
try:
line1 = Line1.strip().split('\t')
for Line2 in chr2.readlines():
try:
line2=Line2.strip().split('\t')
if (abs(int(line1[1])-int(line2[1]))<50) and (line1[0]==line2[0]):
dictcvrcvs[line1[0]]=line1[1]
i+=1
break
except IndexError:
z+=1
continue
except IndexError:
z+=1
continue
dictcvrcvs
{'chr11': '3125133'}
按理说应该有很多怎么会停了呢t
你的代码的问题是,在遍历文件1每一行的时候,文件2都会readlines()一次,但是除了第一次,后面由于指针问题都是空的,解决方法很简单,把文件2的readlines()先赋值给一个变量,然后对这个变量进行迭代:
- %%time
- z=0
- i=0
- dictcvrcvs={}
- chr1 = open('/Users/guoshuyu/Downloads/DMR_info/CG/control_vs_R-48h/c vs Rresult.txt', 'r')
- chr2 = open('/Users/guoshuyu/Downloads/DMR_info/CG/control_vs_S-48h/c vs Sresult.txt', 'r')
- chr1_lines=chr1.readlines() #先把结果赋值给变量,1号文件不是必须,但是为了统一整齐……
- chr2_lines=chr2.readlines() #这个是必须的,不能每次循环都做一次这个动作
- chr1.close() #内容都导出来了,记得关文件
- chr2.close()
- for Line1 in chr1_lines:
- try:
- line1 = Line1.strip().split('\t')
- for Line2 in chr2_lines: #对列表进行迭代,就不会有空的了
- try:
- line2=Line2.strip().split('\t')
- if (abs(int(line1[1])-int(line2[1]))<50) and (line1[0]==line2[0]):
- dictcvrcvs[line1[0]]=line1[1]
- i+=1
- break
- except IndexError:
- z+=1
- continue
-
- except IndexError:
- z+=1
- continue
复制代码
|
最佳答案
查看完整内容
你的代码的问题是,在遍历文件1每一行的时候,文件2都会readlines()一次,但是除了第一次,后面由于指针问题都是空的,解决方法很简单,把文件2的readlines()先赋值给一个变量,然后对这个变量进行迭代:
|