美文网首页
用python合并多个同样的行列式文件(第四题)

用python合并多个同样的行列式文件(第四题)

作者: 多啦A梦詹 | 来源:发表于2020-02-27 23:27 被阅读0次

文件格式如下:

head a.txt
gene_1  178
gene_2  692
gene_3  486

import glob  # 查找文件系统中指定模式的路径

MyDiction = {}

def Readfile(File):    #这个函数面向的对象是FILE
    file_obj = open(File)
    try:              #try...finally 记住这个格式!
        while True:
            line = file_obj.readline().strip("\n")   #返回一个str,()默认一次读一行
            if not line:
                break
            array = line.split("\t")      #返回一个两个变量的list
            if array[0] in MyDiction:
                MyDiction[array[0]].append(array[1])  # append()默认加在后面
            else:
                MyDiction[array[0]] = [array[1]]  #如果没有,第一次录入键+参数
    finally:
        file_obj.close()
    return MyDiction

def main():
    list_dirs = glob.glob("./*.txt")   #glob 包里的glob 函数 引入当前目录下.txt 结尾的文件
    for i in list_dirs:
        Readfile(i)
    for gene_name in MyDiction:
        print ("%s\t%s" %(gene_name, "\t".join(MyDiction[gene_name])))    

if __name__ == '__main__':   # 文件运行的入口,从主函数开始
    main()
import pandas
import os
name_list=os.listdir("GSE48213_RAW")
fram_list=[pandas.read_table("GSE48213_RAW/%s"%name) for name in name_list]
fram=fram_list[0]
for i in range(1,len(fram_list)):
    fram=pandas.merge(fram,fram_list)
fram.to_csv("result.csv",index=False)

附带R脚本:

#把所有txt文件用git放在一个文件夹里面
#把该目录设置为工作目录
library(dplyr)
nameList <- list.files()
matrix <- read.table(nameList[1],header = T,sep = "\t",stringsAsFactors = F)[,1:2]
for (i in 2:length(nameList)){
  matrix <- inner_join(matrix,read.table(nameList[i],header = T,sep = "\t",stringsAsFactors = F)[,1:2],by=colnames(matrix)[1])
}
colnames(matrix)[2:ncol(matrix)]<-unlist(lapply(nameList,function(nameList) strsplit(as.character(nameList),"_")[[1]][1]))
mat=as.matrix(matrix[2:ncol(matrix)])
rownames(mat) <- matrix[,1]

相关文章

网友评论

      本文标题:用python合并多个同样的行列式文件(第四题)

      本文链接:https://www.haomeiwen.com/subject/dthqhhtx.html