Анализатор Python - определение выходных имен файлов - PullRequest
2 голосов
/ 05 апреля 2019

Вопрос новичка - у меня есть синтаксический анализатор 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» впереди.

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете взять входное имя файла, разделить его, чтобы получить часть перед периодом, а затем добавить / добавить «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")
...