为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2021-12-29 20:43:48
初学者的问题 - 我有一个 Python SAX 解析器,它从 .xml 文件中提取文本行并将它们写入 .txt 文件。现在我希望它针对目录中的所有文件运行并从输入文件名派生输出文件名,但我无法让它工作。解析器本身工作正常,所以在下面的代码中我刚刚展示了指定输入和输出文件的块。有关执行此操作的简单方法的任何建议?# Code beginsimport sysimport refrom enum import Enumsys.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 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您可以获取输入文件名,将其拆分以获取句点之前的部分,然后添加/附加“输出”和“.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")


查看完整回答
反对 回复 2021-12-29
  • 1 回答
  • 0 关注
  • 272 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信