文件格式如下:
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]
网友评论