生信修炼Python小推车生信小白成长记

python 2个txt合并为一个excel中的2个sheet

2019-11-21  本文已影响0人  下午三点的闲暇

在linux环境下有2个文件,需要将这2个文件,存到一个excel中的2个sheet中
如何更好的完成这个任务,以下脚本可参考

# -*- coding: utf-8 -*-
#__date__:20180704
#__use__:Combine the result xls to every sheet of one excel

import xlwt,xlrd
import pandas as pd
import codecs

afile="a.xls"
bfile="b.xls"

outexcel ="out_anote.xls"

#####最终结果生成 excel文件###
#调用函数
fr=codecs.open(afile,'rb') #考虑到中文字符转码问题
data1 = pd.read_csv(fr,sep='\t',encoding='gbk')
fr2=codecs.open(bfile,'rb') #考虑到中文字符转码问题
data2 = pd.read_csv(fr2, sep='\t',encoding='gbk')
target_file = pd.ExcelWriter(outexcel)
data1.to_excel(target_file,sheet_name = "A",index = False)
data2.to_excel(target_file,sheet_name = "B",index = False)
target_file.save()

这里面遇到了字符串识别有问题,因此读取文件时,用rb读取,之后大家遇到转码问题,可以试试这个方法
这个脚本中用到了panda包,之前用的不多,现在发现确实很好用,以后可以试着多用以下

在转换过程中,遇到另一个问题,转换之后的文件太大,例如源文件为文本文件,每个有50M ,那合并为xls则为100M,但是在window系统下另存为xlsx格式,则只有30M,文件大小差距太大,因此需要解决,python转换为excel时,文件过大问题

查了很多资料,结果发现,只需要把输出文件的out_anote.xls的后缀名.xls,改成.xlsx即可,解决这个问题,生成的xlsx文件只有30M左右,走了很多弯路,查了很多资料,结果很简单就解决了

上一篇下一篇

猜你喜欢

热点阅读