【问题标题】:Convert .txt to .xls from nested folders将嵌套文件夹中的 .txt 转换为 .xls
【发布时间】:2015-10-21 18:06:00
【问题描述】:

我找到了一个将 .txt 转换为 .xls 的 Python 脚本,它正在运行:Converting multiple tab-delimited .txt files into multiple .xls files

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"  

但是,它只能转换文件路径,而不能转换嵌套文件夹中的任何文件。

如何修改它以包含嵌套文件夹?

【问题讨论】:

    标签: python excel


    【解决方案1】:

    类似下面的东西应该可以工作。它使用 Python 的 os.walk 函数遍历所有子文件夹:

    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"
    

    【讨论】:

    • 嗨,马丁,感谢您的代码。我是 Python 编程的新手,当我执行您的代码时,我收到错误“IdentationError:意外缩进”。愿你有所帮助。百万谢谢。
    • 上面的代码应该可以正常工作,但是您应该复制/粘贴它以确保缩进与现有的相同。 Python 对此非常敏感。还要确保不要将制表符与空格字符混用,这通常是导致问题的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多