Как l oop записей из каталога и передать в функцию MQ в python? - PullRequest
4 голосов
/ 28 февраля 2020

Я установил xmls в каталог XML.

123.xml
234.xml
567.xml

Я хочу, чтобы мой код l oop в каталог и каждый xml и передавался в MQ.

В настоящее время я могу успешно отправить 1 XML с использованием текущего кода.

Я не уверен, как автоматически создавать добавочный UUID для каждого XML в папке и как l oop в приведенном ниже. код.

Текущий рабочий код для гарнизированного XML значение

import ssl
!pip install pika
import pika
import uuid


def send(message):

    uui = uuid.uuid4()
    mydoc = open('123.xml')
    xml = mydoc.read()    


    ssl_options = pika.SSLOptions(ssl._create_unverified_context())
    credentials = pika.PlainCredentials(username='xxxxx', password='xxxx')
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='xxxx', port=5671, virtual_host ='abcd' , 
                                        credentials=credentials, ssl_options=ssl_options))

    channel = connection.channel()
    channel.basic_publish(exchange='xxxxxx', routing_key='',properties=pika.BasicProperties(
                          headers={'uuid': str(uui)}), body=xml)
    connection.close()

    print(message + ' ' + str(uui))

    return message

Как это можно сделать в python?

1 Ответ

1 голос
/ 28 февраля 2020

Вам нужен список XML-файлов в каталоге?

Просто прочитайте каталог и получите файлы в каталоге, а затем l oop через него для выполнения ваших действий.

import ssl
!pip install pika
import pika
import uuid
import os


def send(message):

    xml_files = [file for file in os.listdir(path_to_your_directory) if os.path.isfile(os.path.join(path_to_your_directory, file)) and file.split('.')[-1] == 'xml']
    uui = uui = uuid.uuid4()

    for file in xml_file:
        mydoc = open(file)
        xml = mydoc.read()    


        ssl_options = pika.SSLOptions(ssl._create_unverified_context())
        credentials = pika.PlainCredentials(username='xxxxx', password='xxxx')
        connection = pika.BlockingConnection(pika.ConnectionParameters(host='xxxx', port=5671, virtual_host ='abcd' , 
                                        credentials=credentials, ssl_options=ssl_options))

        channel = connection.channel()
        channel.basic_publish(exchange='xxxxxx', routing_key='',properties=pika.BasicProperties(
                          headers={'uuid': str(uui)}), body=xml)
        connection.close()
        next_uui_hex = hex(int(str(uui).replace('-','').upper(),16) + 1)
        uui = uuid.UUID(next_uui_hex[2:11] + '-' + next_uui_hex[11:15] + '-' + next_uui_hex[15:19] + '-' + next_uui_hex[19:23] + '-' + next_uui_hex[23:])

        print(message + ' ' + str(uui))

    return message
...