一个初学者的问题-我有一个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文件的名称,并将“输出”放在前面。
答案 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")