1 Star 0 Fork 51

iver3on/Cookbook-for-R-Chinese

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mergeTwoTxt.py 3.24 KB
一键复制 编辑 原始数据 按行查看 历史
iver3on 提交于 2020-09-03 21:51 . add mergeTwoTxt.py.
# -*- coding:utf-8 -*-
import os # 读取txt文件所需要的包
import linecache # 读取指定行函数linecache.getline(file_ob, line_num)所在的包
ldata = []
data = []
# file_ob_list是所有文件(比如10个txt)对象组成的列表,for用来循环读取每一个文件,读取一个文件的方式是一行行读入,
# 每次循环一次for就读取所有文件的某一行,因为这一行的第一列都是基因名称,都是一样的
line_num = 2 # 从txt的第一行开始读入
fileA = "C:\\Users\\iver3on\\Desktop\\ESTIMATE scores.txt"
fileB = "C:\\Users\\iver3on\\Desktop\\times.txt"
total_line = len(open(fileA).readlines()) # 计算一个txt中有多少行
total_line2 = len(open(fileB).readlines()) # 计算一个txt中有多少行
file = []
fff = linecache.getline(fileB, 1)
file.append(linecache.getline(fileA, 1).strip() + '\t' + fff.split('\t')[1] + '\t' + fff.split('\t')[2])
newfile = []
while line_num <= total_line: # 只有读完的行数小于等于总行数时才再读下一行,否则结束读取
# for file_ob in file_ob_list: # 按顺序循环读取所有文件
line = linecache.getline(fileA, line_num) # 读取这个文件的第line_num行
line = line.strip() # 去掉这一行最后一个字符/n 即换行符
if line is None or len(line) == 0:
break
fields = line.split('\t') # 将这一行划分为两列,存放到列表中,fields是这样的: ['ENSG00000242268.2','0.0']
prob = fields[0].replace('.','-') # fields[0]是'ENSG00000242268.2' fields[1]是'0.0'
# print prob
line_num2 = 2
while line_num2 <= total_line2:
lineB = linecache.getline(fileB, line_num2) # 读取这个文件的第line_num行
fieldsB = lineB.split('\t') # 将这一行划分为两列,存放到列表中,fields是这样的: ['ENSG00000242268.2','0.0']
tmpB = fieldsB[0]
if prob.__contains__(tmpB):
# print prob
# print tmpB
line = line + '\t'+fieldsB[1] + '\t' + fieldsB[2]
# print line
file.append(line)
# fields.append(fieldsB[1]+'\t')
# fields.append(fieldsB[2]+'\t')
line_num2 = line_num2 + 1
line_num = line_num + 1 # 行数加1,好接着读取每一个文件的第二行
ldata.append(
data)
data = [] # 清空data用来存放所有txt的下一行
f = open("C:\\Users\\iver3on\\Desktop\\result.txt", "w+")
for tmp in file:
print tmp
f.write(tmp)
#f.write('\n')
f.close()
# 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",好使的接下来的数据写入到第二行
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
R
1
https://gitee.com/iver3on/Cookbook-for-R-Chinese.git
git@gitee.com:iver3on/Cookbook-for-R-Chinese.git
iver3on
Cookbook-for-R-Chinese
Cookbook-for-R-Chinese
master

搜索帮助