鱼C论坛

 找回密码
 立即注册
查看: 2909|回复: 16

[已解决]为什么不能保存我的文件,哪里出错了

[复制链接]
发表于 2017-7-9 15:51:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
fasta_file=open('RELN.fasta','r')
out_file=open('human.fasta','w')
seq=''
for line in fasta_file:
    if line[0] =='>' and seq =='':
        header=line
    elif line[0] !='>':
        seq=seq+line
    elif line[0] =='>' and seq !='':
        if 'HUMAN' in header:
            out_file.write(header+seq)
            header=line
            seq=''
out_file.close()

下面是RELN.fasta 部分内容


>sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3
GAPTDVTVHPHLAEIHSDSIILRDDFDSYHQLQLNPNIWVECNNCETGEQCGAIMHGNAV
TFCEPYGPRELITTGLNTTTASVLQFSIGSGSCRFSYSDPSIIVLYAKNNSADWIQLEKI
RAPSNVSTIIHILYLPEDAKGENVQFQWKQENLRVGEVYEACWALDNILIINSAHRQVVL
EDSLDPVDTGNWLFFPGATVKHSCQSDGNSIYFHGNEGSEFNFATTRDVDLSTEDIQEQW
SEEFESQPTGWDVLGAVIGTECGTIESGLSMVFLKDGERKLCTPSMDTTGYGNLRFYFVM
GGICDPGNSHENDIILYAKIEGRKEHITLDTLSYSSYKVPSLVSVVINPELQTPATKFCL
RQKNHQGHNRNVWAVDFFHVLPVLPSTMSHMIQFSINLGCGTHQPGNSVSLEFSTNHGRS
WSLLHTECLPEICAGPHLPHSTVYSSENYSGWNRITIPLPNAALTRNTRIRWRQTGPILG
NMWAIDNVYIGPSCLKFCSGRGQCTRHGCKCDPGFSGPACEMASQTFPMFISESFGSSRL
最佳答案
2017-7-10 18:05:48
likuo 发表于 2017-7-10 15:59
>sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3只是一个相当于标题。
里面有Homo sa ...

试试是这个意思不


  1. fasta_file=open('RELN.txt','r')
  2. out_file=open('human.txt','w')


  3. def isheader(line):
  4.         if line[0] =='>' :
  5.                 return True
  6.         return False
  7.        

  8. def getlist(fasta_file):
  9.         seq=''
  10.         header=''
  11.         h_s=[]
  12.         mid=[]
  13.         for line in fasta_file:
  14.                 if isheader(line):
  15.                         h_s.append(header)
  16.                         h_s.append(seq)
  17.                         mid.append(h_s)
  18.                         header=line
  19.                         seq=''
  20.                         h_s=[]
  21.                 else:
  22.                         seq=seq+line
  23.                
  24.         return mid

  25. def main(fasta_file):        
  26.         mid=getlist(fasta_file)
  27.         for i in mid:
  28.                 if 'HUMAN' in i[0]:
  29.                        out_file.write(i[0]+i[1])
  30.         
  31.             
  32. main(fasta_file)
  33. fasta_file.close()
  34. out_file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-9 16:52:32 | 显示全部楼层
2017-07-09_165038.png

修改后的代码:参考
  1. fasta_file=open('RELN.fasta','r')
  2. out_file=open('human.fasta','w')
  3. seq=''
  4. for line in fasta_file:
  5.     if line[0] == '>' and seq =='':
  6.         header=line
  7.     if line[0] !='>':
  8.         seq=seq+line
  9.     if line[0] == '>' and seq =='':
  10.         if 'HUMAN' in header:
  11.             out_file.write(header+seq)
  12.             header=line
  13.             seq=''
  14. out_file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-9 21:47:34 | 显示全部楼层
ba21 发表于 2017-7-9 16:52
修改后的代码:参考

我是看了一本书里面这样写的,而且你这种方法也没出来结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-9 21:52:36 | 显示全部楼层
ba21 发表于 2017-7-9 16:52
修改后的代码:参考

我想问一下,你这个代码行是怎么写上去的,可以直接复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 22:09:09 | 显示全部楼层
likuo 发表于 2017-7-9 21:52
我想问一下,你这个代码行是怎么写上去的,可以直接复制代码

代码是给你参考的,你用这代码干嘛谁知道啊。知道问题在哪,解决问题才是关键吧。难道现在还不能写文件?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-9 22:18:26 | 显示全部楼层
ba21 发表于 2017-7-9 22:09
代码是给你参考的,你用这代码干嘛谁知道啊。知道问题在哪,解决问题才是关键吧。难道现在还不能写文件?

写不出来,还是空白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 23:34:41 | 显示全部楼层
likuo 发表于 2017-7-9 22:18
写不出来,还是空白

RELN.fasta

  1. >sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3
  2. GAPTDVTVHPHLAEIHSDSIILRDDFDSYHQLQLNPNIWVECNNCETGEQCGAIMHGNAV
  3. TFCEPYGPRELITTGLNTTTASVLQFSIGSGSCRFSYSDPSIIVLYAKNNSADWIQLEKI
  4. RAPSNVSTIIHILYLPEDAKGENVQFQWKQENLRVGEVYEACWALDNILIINSAHRQVVL
  5. EDSLDPVDTGNWLFFPGATVKHSCQSDGNSIYFHGNEGSEFNFATTRDVDLSTEDIQEQW
  6. SEEFESQPTGWDVLGAVIGTECGTIESGLSMVFLKDGERKLCTPSMDTTGYGNLRFYFVM
  7. GGICDPGNSHENDIILYAKIEGRKEHITLDTLSYSSYKVPSLVSVVINPELQTPATKFCL
  8. RQKNHQGHNRNVWAVDFFHVLPVLPSTMSHMIQFSINLGCGTHQPGNSVSLEFSTNHGRS
  9. WSLLHTECLPEICAGPHLPHSTVYSSENYSGWNRITIPLPNAALTRNTRIRWRQTGPILG
  10. NMWAIDNVYIGPSCLKFCSGRGQCTRHGCKCDPGFSGPACEMASQTFPMFISESFGSSRL
复制代码


运行修改后代码:
human.fasta
  1. >sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3
复制代码


之前的图已经说得很清楚了,代码出在逻辑错误 if elif 代码块。我特地还给了个参考代码,为的是让你知道错误出在哪;不要一味的依赖别人。

再说了你RELN.fasta也只给了部分字符,你也没有说你的代码要实现什么样的功能。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 07:32:42 | 显示全部楼层
请说明你这个代码想要干什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 11:16:29 | 显示全部楼层
新手·ing 发表于 2017-7-10 07:32
请说明你这个代码想要干什么

我就是想把这个RELN文件里面 Homo sapiens 物种的氨基酸序列拷贝并保存到另一个新的文件夹里面。fasta格式不能上传所以就传的txt格式。

RELN.txt

399.85 KB, 下载次数: 3

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 11:40:19 | 显示全部楼层
likuo 发表于 2017-7-10 11:16
我就是想把这个RELN文件里面 Homo sapiens 物种的氨基酸序列拷贝并保存到另一个新的文件夹里面。fasta格 ...

说人话
你是要从这个文件里找Homo sapiens这个词?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 11:53:35 | 显示全部楼层
  1. fasta_file=open('RELN.fasta','r')
  2. out_file=open('human.fasta','w')
  3. seq=''
  4. for line in fasta_file:
  5.     if line[0] == '>' and seq =='':
  6.         header=line
  7.     if line[0] !='>':
  8.         seq=seq+line
  9.     if line[0] == '>' and seq =='':
  10.         if 'HUMAN' in header:
  11.             out_file.write(header+seq)
  12.             header=line
  13.             seq=''
  14. out_file.close()
复制代码

这段代码逻辑上有两个问题:
1.如果第一次循环的时候满足
  1. if line[0] == '>' and seq =='':
复制代码
,那么header是啥?
2.如果在运行的时候满足
  1. if line[0] == '>' and seq =='':
复制代码
,但是不满足
  1. if 'HUMAN' in header:
复制代码
,就会什么都不返回
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 15:53:16 | 显示全部楼层
china25qd 发表于 2017-7-10 11:53
这段代码逻辑上有两个问题:
1.如果第一次循环的时候满足,那么header是啥?
2.如果在运行的时候满足, ...

我是想把line的信息放到header里面。header也可以是其他名字 。
这几个if是该是按顺序执行的吧。我学习也没几天,也不懂哪里有问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 15:55:36 | 显示全部楼层
likuo 发表于 2017-7-10 15:53
我是想把line的信息放到header里面。header也可以是其他名字 。
这几个if是该是按顺序执行的吧。我学习 ...

你的“header”没有被定义过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 15:59:43 | 显示全部楼层
新手·ing 发表于 2017-7-10 11:40
说人话
你是要从这个文件里找Homo sapiens这个词?

>sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3只是一个相当于标题。
里面有Homo sapiens这个名字。下面有很多行是关于标题的信息。我就是想在这个文本里面找到这个标题。并把标题和下面的内容一起保存到另一个文件里面。

如果还是看不懂就算了。我也不知道该怎么讲清楚!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 18:05:48 | 显示全部楼层    本楼为最佳答案   
likuo 发表于 2017-7-10 15:59
>sp|P78509|RELN_HUMAN Reelin OS=Homo sapiens GN=RELN PE=1 SV=3只是一个相当于标题。
里面有Homo sa ...

试试是这个意思不


  1. fasta_file=open('RELN.txt','r')
  2. out_file=open('human.txt','w')


  3. def isheader(line):
  4.         if line[0] =='>' :
  5.                 return True
  6.         return False
  7.        

  8. def getlist(fasta_file):
  9.         seq=''
  10.         header=''
  11.         h_s=[]
  12.         mid=[]
  13.         for line in fasta_file:
  14.                 if isheader(line):
  15.                         h_s.append(header)
  16.                         h_s.append(seq)
  17.                         mid.append(h_s)
  18.                         header=line
  19.                         seq=''
  20.                         h_s=[]
  21.                 else:
  22.                         seq=seq+line
  23.                
  24.         return mid

  25. def main(fasta_file):        
  26.         mid=getlist(fasta_file)
  27.         for i in mid:
  28.                 if 'HUMAN' in i[0]:
  29.                        out_file.write(i[0]+i[1])
  30.         
  31.             
  32. main(fasta_file)
  33. fasta_file.close()
  34. out_file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 20:03:39 | 显示全部楼层

终于有个对的了,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 20:04:23 | 显示全部楼层

不过好复杂!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-28 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表