python - Copy specific lines from multiple text files to an excel file -
i have many 1500 text files , want copy 5 lines every text file, line 4,5,9,14 , 32. want make columns of these files in excel sheet 1 below other, of 1500 text files. have figured out code takes in 1 txt file copies data rows. appreciated. here code:
import csv import xlwt import os import sys # input file in same location script file: inputfilename = os.path.join(os.path.dirname(sys.argv[0]), 'c:/path/filename.txt') # strip off path basefilename = os.path.basename(inputfilename) # strip off extension basefilename_noext = os.path.splitext(basefilename)[0] # path of input file target output path targetoutputpath = os.path.dirname(inputfilename) # generate output filename outputfilename = os.path.join(targetoutputpath, basefilename_noext + '.xls') # create workbook object workbook = xlwt.workbook() # add sheet object worksheet = workbook.add_sheet(basefilename_noext, cell_overwrite_ok=true) # csv reader object set reading input file tab delimiters datareader = csv.reader(open(inputfilename, 'rb'), delimiter='\t', quotechar='"') # process file , output excel sheet rowno, row in enumerate(datareader): colno, colitem in enumerate(row): worksheet.write(rowno, colno, colitem) # write output file. workbook.save(outputfilename) # open via operating system (will work on windows) # on linux/unix use subprocess.popen(['xdg-open', filename]) os.startfile(outputfilename)
you first need put of required text files in current folder, glob.glob('*.txt') used list of these filenames. each text file, read files in using readlines() , extract required lines using itemgetter(). each file, create new row in output worksheet , write each line different column entry.
import xlwt import glob import operator # create workbook object wb = xlwt.workbook() # # add sheet object ws = wb.add_sheet('sheet1', cell_overwrite_ok=true) rowy = 0 text_filename in glob.glob('*.txt'): open(text_filename) f_input: try: lines = [line.strip() line in operator.itemgetter(4, 5, 9, 14, 32)(f_input.readlines())] except indexerror e: print "'{}' short".format(text_filename) lines = [] # output excel sheet colno, colitem in enumerate(lines): ws.write(rowy, colno, colitem) rowy += 1 # write output file. wb.save('output.xls')
Comments
Post a Comment