【python】将多个tsv文件合并到excel表中
生活随笔
收集整理的這篇文章主要介紹了
【python】将多个tsv文件合并到excel表中
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求
將某個目錄下多個特定文本文件,合并到excel表中。并要求將文件名作為sheet名,每個sheet中第一行第一個單元格填寫對應文件的所在路徑,單元格格式使用Times New Roman。
使用方法:
# yourdir: 輸入多個特定文件所在目錄 # end_str: 以end_str結尾的特定文件(要進性合并的文件) # outout_xlsx: 指定輸出的excel文件名 # suffix: 為了獲取sheet名,用于分割的字符(串),然后去除該分割(串)符之后的字符 # prefix: 如果文件前綴有該字符(串),將去除該字符(串)之前的字符 python merge_tsv2xlsx.py ${yourdir} ${end_str} ${outout_xlsx} ${suffix} ${prefix}示例:
# 比如"/your/files/dir"目錄下有如下文件: $ ls /your/files/dir a.1.spe.tsv a.2.spe.tsv a.3.spe.tsv a.x.spe.txt # 合并該目錄下所有.spe.tsv文件,并將sheet名命名為1,2,3,4 python merge_tsv2xlsx.py /your/files/dir .tsv /your/files/dir/a.merge.spe.xlsx .spe.tsv a.注:后兩個參數用于去除不需要的字符,如果不對前綴和后綴去除,直接設定為""(空)。
合并后的excel示例:
實現
命名為merge_tsv2xlsx.py
import sys import os import openpyxl import pandas as pd from openpyxl.styles import Font from openpyxl.cell import WriteOnlyCell from openpyxl.comments import Commenttsv_dir = sys.argv[1] end_str = sys.argv[2] # eg: .txt xlsx_out = sys.argv[3] split_str = sys.argv[4] # sheet name from split filename start_str = sys.argv[5] # sheet name: rm start str of filenamedef str2num(str_a):try:n = float(str_a)except ValueError as e:# print("NOTE: not num: ", str_a)n = str_afinally:passreturn ndef write_tsv2xlsx(tsv_file, sheet_name, xlsx_file):wb = openpyxl.load_workbook(xlsx_file)ws = wb.create_sheet(title=sheet_name, index=0)cell = WriteOnlyCell(ws, value=tsv_file)cell.font = Font(name='Times New Roman', size=11, color="D3D3D3")cell.comment = Comment(text="FilePath", author="yourname")ws.append([cell])with open(tsv_file, 'r') as f_in:for line in f_in:line_info_tmp = line.strip().split('\t')# line_info = [str2num(s) for s in line_info_tmp]# ws.append(line_info)cells = []for s in line_info_tmp:cell = WriteOnlyCell(ws, value=s)cell.font = Font(name='Times New Roman', size=11)cells.append(cell)ws.append(cells)wb.save(xlsx_file)def merge_all_tsv():for file_n in os.listdir(tsv_dir):if not file_n.endswith(end_str):continuetsv_file_path = os.path.join(tsv_dir, file_n)if split_str:sname = file_n.split(split_str)[0]else:sname = file_nif start_str:name = sname.split(start_str)[1]else:name = snameprint("#NOTE:%s file is writed to xlsx %s!" % (tsv_file_path, xlsx_out))write_tsv2xlsx(tsv_file_path, name, xlsx_out)if __name__ == '__main__':if os.path.isfile(xlsx_out):print("**ERROR**: %s exists! Please change .xlsx file name" % xlsx_out)sys.exit(1)df_xlsx = pd.DataFrame()df_xlsx.to_excel(xlsx_out)merge_all_tsv()總結
以上是生活随笔為你收集整理的【python】将多个tsv文件合并到excel表中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAS操作原理与实现
- 下一篇: 盘源进销存项目总结