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

Python parser - defining output filenames

初学者的问题 - 我有一个 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 文件的名称并将 "output" 放在前面。

您可以将输入的文件名拆分为句点之前的部分,然后 prepend/append "output" 和 ".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")