【问题标题】:Convert a folder of .txt files to .xlsx in python with plots在带有绘图的python中将.txt文件的文件夹转换为.xlsx
【发布时间】:2018-07-13 05:26:52
【问题描述】:

我有一个包含约 1000 个 .txt 文件的文件夹,其中包含数据,我希望以相同的方式绘制这些文件。这对我来说需要三个挑战: 1)将 .txt 转换为 .xlsx(或 .xls - 我不在乎) 2) 一次性完成第 1 步,而不是为我要转换的每个文件输入文件名 3)转换文件后,我需要excel将数字识别为数字而不是文本(即目前我必须在excel上手动输入“文本到列”功能,这对于~1000个电子表格的2列来说很烦人)

我有 2 个接近的代码(我在网上找到了一些其他代码)。

代码 1:

import xlwt
import xlrd
import csv
import openpyxl
import xlsxwriter


mypath = 'C:/desktop/Text Documents/'


from os import listdir
from os.path import isfile, join
textfiles = [ join(mypath,f) for f in listdir(mypath) if isfile(join(mypath,f)) and '.txt' in  f]
for textfile in textfiles:
    f = open(textfile, 'r+')
    row_list = []
    for row in f:
        row_list.append(row.split('\t'))
    column_list = zip(*row_list)
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Sheet1')
    i = 0
    for column in column_list:
        for item in range(len(column)):
            worksheet.write(item, i, column[item])
        i+=1
    workbook.save(textfile.replace('.txt', '.xls'))

上面取了一个文本文件的文件夹并将它们转换为.xls,并对其进行分隔,但不幸的是我仍然必须使用“文本到列”功能

代码 2:

import csv
import openpyxl
import xlsxwriter
import xlrd

input_file = 'C:/desktop/Text Documents/thisismytextfilename.txt'
output_file = 'C:/desktop/Text Documents/thisismytextfilename.xlsx'

wb = openpyxl.Workbook()
ws = wb.worksheets[0]

with open(input_file, 'rb') as data:
    reader = csv.reader(data, delimiter='\t')
    for row in reader:
        ws.append(row)


wb.save(output_file)

file_location = output_file

workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0) #2 indicates 3rd page

x = [sheet.cell_value(i+14, 0) for i in range(sheet.nrows-14)]
y = [sheet.cell_value(i+14, 1) for i in range(sheet.nrows-14)]

workbook = xlsxwriter.Workbook(file_location)
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': 1})

# Add the worksheet data that the charts will refer to.
headings = ['Time (s)', 'Load (kg)']
data = [x,y]

worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])

chart1 = workbook.add_chart({'type': 'scatter'})

# Configure the first series.
chart1.add_series({
    'name': '=Sheet1!$B$1',
    'categories': '=Sheet1!$A$2:$A$25000',
    'values': '=Sheet1!$B$2:$B$25000'})

chart1.set_x_axis({'name': 'Time'})
chart1.set_y_axis({'name': 'Load'})
chart1.set_style(1)

# Insert the chart into the worksheet (with an offset).
worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10})

workbook.close()

这会提取我想要的 2 列数据并创建一个图。但是我必须复制/粘贴每个文件的文件名,并且每次都必须通过并单击“文本到列”。

【问题讨论】:

    标签: python excel text


    【解决方案1】:

    我每次都必须浏览并单击“文本到列”。

    您可以使用 XlsxWriter constructor 参数 strings_to_numbers 来避免这种情况:

    workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2014-10-15
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多