搜索
查看: 2139|回复: 0

直播第四题【代码注释】:多个同样的行列式文件合并.....

[复制链接]

10

主题

11

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2017-7-9 13:02:52 | 显示全部楼层 |阅读模式
[Python] 纯文本查看 复制代码
'''
首先声明【代码来自生信编程直播第四题:多个同样的行列式文件合并起来】
我是新手,只是学习了,做了代码注释,如果注释有错,欢迎小伙伴指出,以防祸害别人
#注释者:默存,20170709

'''
'''
测试文件生成:
#首先新建文件tem.sh 输入这个代码:
perl -le '{print "gene_$_\t".int(rand(1000)) foreach 1..99}'
#然后用perl脚本调用这个tmp.sh脚本:
perl -e 'system(" bash tem.sh >$_.txt") foreach a..z'
#这样就生成了a~z这26个样本的counts文件
下面代码解决怎么把这26个样本合起来
'''
#! /usr/bin/python
import glob  # 遍历指定路径下某一个类型的文件 ,其中glob函数常用

MyDiction = {}#储存数据字典
#定义一个函数 将对象File中的数据存储在MyDiction中
def Readfile(File):    #这个函数面向的对象是File
    file_obj = open(File)
    try:              #try...finally 记住这个格式!
        while True:
            line = file_obj.readline().strip("\n")   #一次读一行,去末尾换行符
            if not line:
                break
            array = line.split("\t")#Table分割每一行
            if array[0] in MyDiction:
                MyDiction[array[0]].append(array[1])  #如果array[0],即基因名字在{}中,append(array[1])默认加在后面
            else:
                MyDiction[array[0]] = [array[1]]  #如果没有,第一次录入键 值
    finally:
        file_obj.close()#关闭file_obj
    return MyDiction 
    
#定义主函数
def main():
    list_dirs = glob.glob("./*.txt")   #glob包里的glob函数匹配当前目录(./)下.txt 结尾的文件
    #print(list_dirs)
    for i in list_dirs:    
        Readfile(i)#对每一个.txt文件,调用前面定义的Readfile函数
        
    for gene_name in MyDiction:
        print ("%s\t%s" %(gene_name, "\t".join(MyDiction[gene_name])))    #join函数,table键连接MyDiction中MyDiction[gene_name]

if __name__ == '__main__':   # 文件运行的入口,从主函数开始,没有则不能执行
    main()
  #代码执行:python name.py  




上一篇:oligo 阵列数据读取和归一化
下一篇:批量修改png图片,把文件名添加到图片里面去
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-9-22 08:30 , Processed in 0.029275 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.