Python 在Excel中打印输出

Python 在Excel中打印输出,python,excel,xlwt,Python,Excel,Xlwt,我是Python新手。我想从多个xml文件中检索标记值,并将其打印在excel工作表中。我试着让脚本运行良好,而不是excel打印部分 这是我的剧本 from xml.dom.minidom import parse, parseString import xlwt import os def sh(dir): for r,d,f in os.walk(dir): n=0 for files in f: if files.endswith(".xml"):

我是Python新手。我想从多个xml文件中检索标记值,并将其打印在excel工作表中。我试着让脚本运行良好,而不是excel打印部分

这是我的剧本

from xml.dom.minidom import parse, parseString
import xlwt
import os
def sh(dir):
for r,d,f in os.walk(dir):
    n=0
    for files in f:
        if files.endswith(".xml"):
            print files
            dom=parse(os.path.join(r, files))
            name = dom.getElementsByTagName('rev')
            title = dom.getElementsByTagName('title')
            a=xlwt.Workbook()
            sheet=a.add_sheet('sheet1')
            sheet.write(n, 0, files)
            sheet.write(n, 1, title[0].firstChild.nodeValue)
            sheet.write(n, 2, name[0].firstChild.nodeValue)
            n=n+1
            a.save('sha.xls')
            print title[0].firstChild.nodeValue
            print name[0].firstChild.nodeValue

sh("path")
我遇到的问题是,输出仅在这些列(0,0)、(0,1)、(0,2)中打印

e、 如果我愿意的话

A            B           C
D            E           F
G            H           I
我的输出

G            H           I
在(0,0)、(0,1)、(0,2)中。
因此,我了解到,每个新输出都覆盖在现有输出上,并且只显示最终输出。如何避免这种情况并获得我想要的?

您应该在循环之外定义工作簿和工作表:

def sh(dir):   
    a = xlwt.Workbook()
    sheet = a.add_sheet('sheet1')
    n = 0
    for r,d,f in os.walk(dir):
        for files in f:
            if files.endswith(".xml"):
                print files
                dom=parse(os.path.join(r, files))
                name = dom.getElementsByTagName('rev')
                title = dom.getElementsByTagName('title')
                sheet.write(n, 0, files)
                sheet.write(n, 1, title[0].firstChild.nodeValue)
                sheet.write(n, 2, name[0].firstChild.nodeValue)
                n += 1
                print title[0].firstChild.nodeValue
                print name[0].firstChild.nodeValue
    a.save('sha.xls')

此外,如果您不需要在子目录中搜索XML文件,请考虑切换到使用<代码> OS.Walk() >:


您应该在循环外定义工作簿和工作表:

def sh(dir):   
    a = xlwt.Workbook()
    sheet = a.add_sheet('sheet1')
    n = 0
    for r,d,f in os.walk(dir):
        for files in f:
            if files.endswith(".xml"):
                print files
                dom=parse(os.path.join(r, files))
                name = dom.getElementsByTagName('rev')
                title = dom.getElementsByTagName('title')
                sheet.write(n, 0, files)
                sheet.write(n, 1, title[0].firstChild.nodeValue)
                sheet.write(n, 2, name[0].firstChild.nodeValue)
                n += 1
                print title[0].firstChild.nodeValue
                print name[0].firstChild.nodeValue
    a.save('sha.xls')

此外,如果您不需要在子目录中搜索XML文件,请考虑切换到使用<代码> OS.Walk() >:


非常感谢你。它确实工作得很好。我不知道glob.glob()格式,将尝试使用此格式。再次感谢……非常感谢。它确实工作得很好。我不知道glob.glob()格式,将尝试使用此格式。再次感谢……)