Заменить XML-файл обработанными данными во время выполнения - PullRequest
0 голосов
/ 01 июля 2019

Это продолжение моего предыдущего сообщения о переполнении стека: как денормализовать координаты?

Я перечисляю все файлы с расширением xml, используя приведенный ниже код

import xml.etree.ElementTree as ET
import os
import glob
import shutil
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element

path = os.getcwd()
print(path)
os.chdir(path)
newpath=os.path

list_of_xmls = glob.glob(path+"//*.xml")

Для каждого файла с расширением xml я денормализую координаты

for item in list_of_xmls:   

    with open(item) as f: root = ET.parse(f)
    xml_raw = open(item+".txt", "w")
    for obj in root.findall('object'):
        bndbox: Element = obj.find('bndbox')
        name = obj.find('name').text
        xmin, xmax, ymin, ymax = [int(bndbox.find(x).text) for x in ['xmin', 'xmax', 'ymin', 'ymax']]
        coords = [(x, y) for x in [xmin, xmax] for y in [ymin, ymax]]

        print(coords, ','+name)
        xml_raw.write(str(coords)+str(',english')+'\n')

Вывод - это денормализованные координаты:

[(201, 162), (201, 229), (207, 162), (207, 229)] text
[(208, 162), (208, 229), (223, 162), (223, 229)] text
[(224, 162), (224, 229), (239, 162), (239, 229)] text
[(493, 255), (493, 305), (625, 255), (625, 305)] text
[(85, 339), (85, 400), (496, 339), (496, 400)] text

Мой вопрос: я хочу записать эти выходные данные в новомфайл таким образом, что

  1. При наличии 10 файлов xml все они должны быть заменены файлами 10.txt.
  2. Имя этих файлов txt должно совпадать с именем файлаXML-файл, из которого он был получен.

Например, для приведенного выше примера мой текстовый файл должен быть:

file

Я попытался сделать это, открыв текстовый файл внутри цикла с помощью метода, который я пытался использовать с помощью приведенного выше кода. Я получаю выходной файл с именем «100_icdar13.xml.txt».Я хочу "100_icdar13.txt".Как мне это получить?

...