Python实现读取多个/批量txt文件合并成一个txt(示例为tcga数据处理)
本程序功能
将tcga数据的批量txt文件合并成一个txt。
如下:
- 原始的第一个txt(代表一个病人)的数据内容
- 合并之后的txt数据,基因名不变,只是把病人的表达量收集到一起
操作详细步骤
本人测试通过的运行环境:Python 2.7 Windows 7 64bit cmd命令运行器
使用步骤:
1.将要处理的数据txt文件放入到11这个文件夹下面(默认的root = 'C:\\tcga\\datapro\\11'),或者将单引号' '中的路径改成自己txt所在的文件夹的路径(结尾没有\\)也行
2.放入的txt文件建议不要超过100个,因为个数越多,读入时消耗电脑内存就越大,容易卡机,测试时100个可以正常运行
3.默认生成的txt路径为F:/data1.txt,自己也可以修改这个路径和文件名
4.点Windows键,在搜索栏输入 cmd 按回车键,cmd将被打开
4.将tcga_txt.py文件复制到安装的Python所在的文件夹下,我的是C:\Python27(默认安装就是这个路径),能看到python.exe
5.在cmd中输入cd C:\Python27(注意有空格)按回车会进入到该目录,然后输入python.exe tcga_txt.py 再按回车,就开始执行程序了,可以看到写入到输出文件的基因行数
4.处理完第一批txt后,记得将生成的data1.txt改名或者的剪切到别的地方,防止第二批txt运行时生成的data1.txt将其覆盖掉
源码
tcga_txt.py
# -*- coding:utf-8 -*-
"""
Author:Logen
Version=1.0
Email:iin729@163.com
测试的运行环境:Python 2.7 Windows 7 64bit
使用说明:1.将要处理的数据txt文件放入到11这个文件夹下面(默认的root = 'C:\\tcga\\datapro\\11'),或者将''中的路径改成自己txt所在的文件夹的路径也行2.放入的txt文件建议不要超过100个,因为个数越多,读入时消耗电脑内存就越大,容易卡机,测试时100个可以正常运行3.默认生成的txt路径为F:/data1.txt,自己也可以修改这个路径和文件名4.处理完第一批txt后,记得将生成的data1.txt改名或者的剪切到别的地方,防止第二批txt运行时生成的data1.txt将其覆盖掉
"""
#当编写的Python文件即当前代码及注释中含有中文或者非英文字符时,需要声明编码格式为utf-8
import os #读取txt文件所需要的包
import linecache #读取指定行函数linecache.getline(file_ob, line_num)所在的包root = 'C:\\tcga\\datapro\\11'#读取的批量txt所在的文件夹的路径
file_names = os.listdir(root) #读取11文件夹下所有的(520个)txt的文件名
file_ob_list = [] #定义一个列表,用来存放刚才读取的520个txt文件名
for file_name in file_names: #循环地给这520个文件名加上它前面的路径,以得到它的具体路径fileob = root + '\\' + file_name #文件夹路径加上\\ 再加上具体要读的的txt的文件名就定位到了这个txtfile_ob_list.append(fileob) #将路径追加到列表中存储 ['C:\\tcga\\datapro\\11\\1.txt','C:\\tcga\\datapro\\11\\2.txt',。。。。]print file_ob_list #打印这个列表的内容到显示屏,不想显示的话可以去掉这句ldata=[]
data = []#file_ob_list是所有文件(比如10个txt)对象组成的列表,for用来循环读取每一个文件,读取一个文件的方式是一行行读入,# 每次循环一次for就读取所有文件的某一行,因为这一行的第一列都是基因名称,都是一样的
line_num = 1 #从txt的第一行开始读入
total_line = len(open(file_ob_list[0]).readlines()) #计算一个txt中有多少行
while line_num <= total_line: #只有读完的行数小于等于总行数时才再读下一行,否则结束读取for file_ob in file_ob_list: #按顺序循环读取所有文件line = linecache.getline(file_ob, line_num)#读取这个文件的第line_num行line = line.strip() #去掉这一行最后一个字符/n 即换行符if line is None or len(line) ==0 :breakfields = line.split('\t') #将这一行划分为两列,存放到列表中,fields是这样的: ['ENSG00000242268.2','0.0']prob = fields[1] # fields[0]是'ENSG00000242268.2' fields[1]是'0.0'#这个if部分只是将表达量的10位小数点压缩到4位,其实可以去掉这个处理if fields[1] != 'NA': #基因表达量不是NA也就是为数字时,才对它进行小数点的减少处理prob = float(fields[1]) #将字符形式的数字如'0.0'强制转化为浮点型(带小数点的数字)数字0.0prob = '%.4f' % prob #只保留小数点后面的4位小数if file_ob == file_ob_list[0] : #如果读的是第一个txt文件,则将读进去的第一列基因名和第二列表达量data = [fields[0], prob] # 都加入到列表中 data= ['ENSG00000242268.2','0.0']else : # 如果读进去的不是第一个文件,则跳到else执行,第一列不要,data.append(prob) #只将第二列表达量追加到之前的二维数组后面,假如这时读的是第二个文件的第一行# 此时fields为['ENSG00000242268.2','0.10'],则data=['ENSG00000242268.2','0.0','0.10']line_num = line_num + 1 #行数加1,好接着读取每一个文件的第二行ldata.append(data) #将存放了所有txt的第一行数据的data,放到一个新的列表中保存,这时ldata就是一个二维列表,ldata=[['ENSG00000242268.2','0.0','0.10'],[...],...]#用来存放所有的(60482行,就是所有的基因名)行数data=[] #清空data用来存放所有txt的下一行f = open("F:/data1.txt", "w+") #创建存放数据的文件
for i,p in enumerate(ldata): #将数据写入文件,i是enumerate()函数返回的ldata的某个元素p(就是一行数据,如['ENSG00000242268.2','0.0','0.10']从第一个开始)开始的序号(0,1,2等)for j,q in enumerate(p): #读取p(如['ENSG00000242268.2','0.0','0.10'])中的每一个元素f.write(q + "\t" ) #将这个元素写到txt中,每写一个加入一个“\t”(它代表excel中的一根竖线)print i #显示一下打印到了第多少行f.write( "\n") #每写完一行,就写入一个换行符"\n",好使的接下来的数据写入到第二行f.close() #操作完一个文件后应该将它关闭
Python实现读取多个/批量txt文件合并成一个txt(示例为tcga数据处理)相关推荐
- 将多个txt文本文件合并成一个txt文件
将多个txt文本文件合并成一个txt文件 方法一:批处理文件 有文档1.txt.2.txt 新建一个文档:合并文档.txt,在该合并文档中输入 copy/b 1.txt+2.txt 3.txt 将合并 ...
- 如何利用python整合excel_Python将多个excel文件合并为一个文件
Python将多个excel文件合并为一个文件 这篇文章主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 思路 利用python x ...
- python处理多个excel文件-python多个excel文件合并成一个sheet
运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...
- python 整合excel_Python将多个excel文件合并为一个文件
# -*- coding: utf-8 -*- #将多个Excel文件合并成一个 import xlrd import xlsxwriter #打开一个excel文件 def open_xls(fil ...
- 用python将指定目录下的所有json文件合并成一个csv文件
#!/usr/bin/env python # -*- encoding: utf-8 -*-import sys import json import os import pandas as pd ...
- pythonexcel合并多个sheet_python多个excel文件合并成一个sheet
运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...
- 多个txt合并成一个txt(简单易操作)
操作步骤 1.同时按住 win+R,然后输入"cmd"进入命令行操作: 2.改变盘符(具体盘符取决于文件所在盘) 3.跳转到txt所在文件夹位置: 4.合并展示txt数据(可以看到 ...
- 怎么将多个CSV文件合并成一个CSV文件
最近要批量将几百个CSV文件合成一个文件,最开始是一个个复制粘贴的,进度太慢了,后面发现用一个小办法可以几秒钟将几百个CSV文件合并成一个文件,分享给大家. 第一步:将需要合并的csv文件夹全部放在D ...
- 如何将多个excel表格合并成一个_怎么将多个pdf文件合并成一个?
现实生活中,不知道大家有没有遇上这样的时刻,自己不会做pdf文件,于是就去网上找了一些素材,但是网上的素材都是零零散散的,但是我们又不知道应该如何才能将她们拼凑到一起.如果你也在为这样的问题而烦恼的话 ...
最新文章
- 权威预测:2018年这十大数字化转型趋势要火!
- 论如何寻找万一的川财证券开户渠道
- OpenMV中AprilTag识别Python程序源码
- 超级有意思的代码注释
- 图像检索:拓展查询(Query Expansion)
- 软件项目管理的十大定律之说明
- ecshop 2.7.x 去版权 lengze.com
- 谁说docker-compose不能水平扩展容器、服务多实例?
- 01_Struts2概述及环境搭建
- 一款问答APP的产品需求文档(PRD)
- linux下重启weblogic
- python函数的使用方法_Python函数使用
- vb不能插入png图片_收藏备用!!VBA操作图片【插入导出删除】
- 在线提取抖音视频BGM源码
- html文字溢出怎样处理,css文本溢出处理
- 收集了几个h5案例 与大家分享一下
- java 判断生日和当前时间 对比
- mysql字段时间类型报异常Data truncation: Incorrect datetime value: ‘2099-01-01 00:00:00‘ for column
- 开发工具之VisualStudio
- LOCATE函数的用法