Python 如何逐行读取多个文本文件并发送到excel,在每个文件之后移动到新列?

Python 如何逐行读取多个文本文件并发送到excel,在每个文件之后移动到新列?,python,excel,loops,text-files,openpyxl,Python,Excel,Loops,Text Files,Openpyxl,我正在构建一个脚本来运行重复的测试,每个测试都有一个日志文件,该文件将被读取并编译成电子表格 每个文件中的文件和行数将根据时间和所需的时间而变化。我有一个基本的脚本,可以逐行读取一个文件,并将数据粘贴到一个连续行的单独excel文档中 from openpyxl import load_workbook from Test_Parameters import Results_Name from Downstream import Log_Angle wb = load_workbook(fil

我正在构建一个脚本来运行重复的测试,每个测试都有一个日志文件,该文件将被读取并编译成电子表格

每个文件中的文件和行数将根据时间和所需的时间而变化。我有一个基本的脚本,可以逐行读取一个文件,并将数据粘贴到一个连续行的单独excel文档中

from openpyxl import load_workbook
from Test_Parameters import Results_Name
from Downstream import Log_Angle

wb = load_workbook(filename= Results_Name +'.xlsm', read_only=False, keep_vba=True)
ws7 = wb['timeData']

FILE = open('0_Downstream.txt', 'r+')
line = FILE.readline()
N = '2'


while line !="":
    print(line)
    ws7['A'+N] = line
    line = FILE.readline()
        N = float(N)
        N = (N+1)
        N = "%g" % N
    wb.save(Results_Name+'.xlsm')

    FILE.close()
我需要能够让这个循环通过多个文件在同一个目录,并把结果在一个单独的列比最后。 与下表类似:

谢谢你的帮助

import os
cwd = os.getcwd()

for filename in os.listdir(cwd):
    if filename.endswith(".txt"):
        with open('%s\\%s' % (cwd, filename), 'r+') as file:
            [DO STUFF]
上面的代码允许您迭代当前工作目录中的多个文件(指定类型)


这有帮助吗?

我的想法与卢克的想法相同(只是打字花了一点时间):


不要使用
ws['A'+N]
进行编程访问

我认为以下内容可能与您想要的内容非常接近:

col_idx = ws.max_column + 1
for row_idx, line in enumerate(file, 1):
    if line == "":
        break
    ws.cell(row=row_idx, col=col_idx, value=line)
wb.save(…)
  • 此示例读取test/txt中的所有文件
  • 为每个文件使用一个新列
  • 文件名分配给第1行
  • 从第2行开始追加所有阅读行

    # List all files in test/txt'
    dirName = os.path.join('test', 'txt')
    
    for column,fname in enumerate(os.listdir(dirName),1):
      # Column Title = Filename
      ws.cell(row=1, column=column, value=fname)
    
      # My Sample Text files are utf-8 encoded
      with io.open( os.path.join(dirName, fname),'r', encoding='utf8') as fh:
        # Column Data begins on Row 2
        for row,line in enumerate(fh,2):
          ws.cell(row=row, column=column, value=line)
      #end with = closing fh
    #end for
    
    使用Python:3.4.2-openpyxl:2.4.1-LibreOffice:4.3.2*测试


  • 查看现有代码,我建议在每次打开新文件时增加列值
    ws7['A'+N]=line
    。是否希望将每一行作为列或行追加到excel文件中?代码看起来不完整:您使用
    N
    做什么?
    # List all files in test/txt'
    dirName = os.path.join('test', 'txt')
    
    for column,fname in enumerate(os.listdir(dirName),1):
      # Column Title = Filename
      ws.cell(row=1, column=column, value=fname)
    
      # My Sample Text files are utf-8 encoded
      with io.open( os.path.join(dirName, fname),'r', encoding='utf8') as fh:
        # Column Data begins on Row 2
        for row,line in enumerate(fh,2):
          ws.cell(row=row, column=column, value=line)
      #end with = closing fh
    #end for