为了账号安全,请及时绑定邮箱和手机立即绑定

生信编程实战第11题(python)

标签:
Python

webp

image.png


题目不难,先给出代码

import sys
args=sys.argv
filename=args[1]
aList=[]for i in range(1,23):
  i=str(i)     #这个转换特别重要,如果不换,存到列表中的将是数字,不是字符串
  aList.append(i)with open(filename) as fh:  for line in fh:     if line.startswith("#"):         continue
     lineL=line.strip().split("\t")
     chr_num=lineL[0]            #当然这里也是可以考虑转成int,上面的不用转str,但是!!,并不是所有的chr_num都是数字形式的str,所以不能转int,会报错
     if chr_num in aList:
        name=chr_num+".txt"
        f=open(name,"a")     #a很重要,表示写入文件,如果文件存在,则在结尾追加
        f.write(line)    #写入文件
        f.close()   #文件关闭
     else :
        name="else_chr.txt"
        f=open(name,"a")
        f.write(line)
        f.close()
python3 dis.py CCDS.current.txt

webp

image.png

这里主要说几个问题:

  1. python中写入文件可以用的模式如下:
    f=open(filename,"a")
    f.write(content)
    f.close()
    其中a很重要,表示“写入,如果文件有内容,则在末尾追加写入”
    这样就可以保证,无论染色体的顺序怎么排序,只要提取染色体号作为文件名,那么,相同的染色体那一行都会写入同一个文件,因为文件存过一次后,相同的染色体的行可以在该文件结尾追加。

这里就顺便把open函数的其他mode了解一下:
'rt'为默认方式
'r'       open for reading (default)——只读,默认方式
'w'       open for writing, truncating the file first——写入,会覆盖源文件内容
'x'       create a new file and open it for writing——创建新文件,并写入内容,如果文件已存在,将会报错:FileExistsError
'a'       open for writing, appending to the end of the file if it exists——写入,如果文件有内容,则在末尾追加写入
'b'       binary mode——二进制模式
't'       text mode (default)——文本模式
'+'       open a disk file for updating (reading and writing)——更新磁盘文件,读写
'U'       universal newline mode (deprecated)——在python3中已经弃用

2.因为题目要求是1~22号染色体分别存入文件,其他的存入同一个文件
所以我的想法是创建一个1~22数字的存入一个列表,每次都判断染色体号在不在列表,在就分别存,不在就存到一个共同的else的文件。
这个思路没有问题,但是,关键在于
我用for 循环得到的是整型存入列表的,而逐行读取的染色体号是字符串型,如果不转换,直接判断就会发现都不在列表中。
所以需要转换,但是只能是把整型转成字符串型
因为染色体号还有其他非数字型的字符串,转整型会报错的。



作者:天秤座的机器狗
链接:https://www.jianshu.com/p/575f43cdf476


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消