将特定行从多个文本文件复制到Excel文件

时间:2017-07-28 16:35:14

标签: python excel text

我有多达1500个文本文件,我想从每个文本文件中复制5行,比如第4,5,9,14和32行。我想在excel表格中创建这些文件的列。另外,1500个文本文件。我已经找到了一个代码,它只接受一个txt文件,但将所有数据复制到行中。任何帮助将不胜感激。 这是我的代码:

import csv
import xlwt

import os
import sys

# Look for input file in same location as script file:
inputfilename = os.path.join(os.path.dirname(sys.argv[0]), 
'C:/path/filename.txt')
# Strip off the path
basefilename = os.path.basename(inputfilename)
# Strip off the extension
basefilename_noext = os.path.splitext(basefilename)[0]
# Get the path of the input file as the target output path
targetoutputpath = os.path.dirname(inputfilename)
# Generate the output filename
outputfilename = os.path.join(targetoutputpath, basefilename_noext + '.xls')

# Create a workbook object
workbook = xlwt.Workbook()
# Add a sheet object
worksheet = workbook.add_sheet(basefilename_noext, cell_overwrite_ok=True)

# Get a CSV reader object set up for reading the input file with tab 
delimiters
datareader = csv.reader(open(inputfilename, 'rb'),
                    delimiter='\t', quotechar='"')

# Process the file and output to Excel sheet

for rowno, row in enumerate(datareader):
  for colno, colitem in enumerate(row):

     worksheet.write(rowno, colno, colitem)

 # Write the output file.
 workbook.save(outputfilename)

# Open it via the operating system (will only work on Windows)
# On Linux/Unix you would use subprocess.Popen(['xdg-open', filename])
os.startfile(outputfilename)

1 个答案:

答案 0 :(得分:0)

首先需要将所有必需的文本文件放在当前文件夹中,然后可以使用readlines()来获取这些文件名的列表。对于每个文本文件,使用itemgetter()读取文件并使用import xlwt import glob import operator # Create a workbook object wb = xlwt.Workbook() # # Add a sheet object ws = wb.add_sheet('Sheet1', cell_overwrite_ok=True) rowy = 0 for text_filename in glob.glob('*.txt'): with open(text_filename) as f_input: try: lines = [line.strip() for line in operator.itemgetter(4, 5, 9, 14, 32)(f_input.readlines())] except IndexError as e: print "'{}' is too short".format(text_filename) lines = [] # Output to Excel sheet for colno, colitem in enumerate(lines): ws.write(rowy, colno, colitem) rowy += 1 # Write the output file. wb.save('output.xls') 提取所需的行。对于每个文件,在输出工作表中创建一个新行,并将每一行写为不同的列条目。

var query   = {}; // Your condition
var options = {
    select:   'title date author',
    sort:     { date: -1 },
    populate: 'author',
    lean:     true,
    offset:   20, 
    limit:    10
};

Book.paginate(query, options).then(function(result) {
    // ... 
});