2015-10-21 4 views
0

Я нашел сценарий Python для преобразования .txt в .xls и он работает: Converting multiple tab-delimited .txt files into multiple .xls files:Преобразовать .txt в .xls из вложенных папок

import glob 
    import csv 
    import xlwt 
    import win32com.client as win32 
for filename in glob.glob("C:\Users\MSI\Desktop\Python Lab\AGR\\*.txt"): 
    spamReader = csv.reader((open(filename, 'rb')), delimiter='|',quotechar='"') 
    encoding = 'latin1' 
    wb = xlwt.Workbook(encoding=encoding) 

    sheet=xlwt.Workbook() 
    sheet = wb.add_sheet('sheet 1') 
    newName = filename 
    for rowx, row in enumerate(spamReader): 
     for colx, value in enumerate(row): 
      sheet.write(rowx, colx, value) 

    wb.save(newName.replace('.txt','.xls')) 

print "Done" 

Однако, он может конвертировать только путь к файлу, но не смог конвертировать любые файлы во вложенные папки.

Как я могу изменить его, чтобы включить вложенные папки?

ответ

1

Что-то вроде следующего должно работать. Он использует функцию os.walk Python для перемещения всех подпапок:

import xlwt 
import os 

path = r'C:\Users\MSI\Desktop\Python Lab\AGR' 

for root, dirs, files in os.walk(path): 
    for filename in files: 
     name, ext = os.path.splitext(filename) 
     if ext.lower() == '.txt': 
      source = os.path.join(root, filename) 
      dest = os.path.join(root, name + '.xls') 

      with open(source, 'rb') as f_input: 
       spamReader = csv.reader(f_input, delimiter='|',quotechar='"') 
       wb = xlwt.Workbook(encoding='latin1') 
       sheet = xlwt.Workbook() 
       sheet = wb.add_sheet('sheet 1') 

       for rowx, row in enumerate(spamReader): 
        for colx, value in enumerate(row): 
         sheet.write(rowx, colx, value) 

       wb.save(dest) 

print "Done" 
+0

Привет, Мартин, спасибо за ваш код. Я новичок в программировании на Python, и когда я выполнил ваш код, я получил ошибку «IdentationError: неожиданный отступ». Можете ли вы помочь. Миллион спасибо. – McD

+0

Код выше должен работать нормально, но вы должны скопировать его/вставить, чтобы отступы оставались идентичными тому, что есть. Python очень чувствителен к этому. Также убедитесь, что вы не смешиваете символы табуляции с пробелами, это обычно вызывает проблему. –

Смежные вопросы