Python解析器-定义输出文件名

时间:2019-04-05 10:33:21

标签: python python-3.x parsing saxparser

一个初学者的问题-我有一个Python SAX解析器,该解析器从.xml文件中提取文本行并将其写到.txt文件中。现在,我希望它对目录中的所有文件运行,并从输入文件名导出输出文件名,但是我无法使其工作。

解析器本身运行良好,因此在下面的代码中,我刚刚显示了指定输入和输出文件的块。有什么简单的建议吗?

# Code begins

import sys
import re
from enum import Enum

sys.stdout = open("outputab123.txt", "w", encoding="UTF-8")

import xml.sax

# ~ 50 lines of SAX parser code

# Final block of code
   parser.parse("ab123.xml")
   sys.stdout.close()

对于每个输出.txt文件,我只想取输入.xml文件的名称,并将“输出”放在前面。

1 个答案:

答案 0 :(得分:0)

您可以获取输入文件名,将其拆分为句点之前的部分,然后在“输出”和“ .txt”之前/附加:

xmlfile = "ab123.xml"
txtfile = "output" + xmlfile.split(".")[0] + ".txt"
print(txtfile)

输出:

outputab123.txt

总的来说,您的代码可能类似于:

listofiles = # define list of files here (eg. using glob)

for xmlfile in listoffiles:
    # parsing here
    parser.parse(xmlfile)
    sys.stdout.close()

    txtfile = "output" + xmlfile.split(".")[0] + ".txt"
    sys.stdout = open(txtfile, encoding="UTF-8")
    # write to text file here

要获取目录中.xml个文件的列表,可以使用glob

listoffiles = glob.glob("/path/to/directory/*.xml")