Возникли проблемы с чтением данных x12 из библиотеки Python pyx12

У меня возникли проблемы с загрузкой данных x12 из файла, чтобы проанализировать и определить, соответствуют ли они необходимым нам критериям. Вот что у меня есть на данный момент, но я продолжаю получать сообщение об ошибке "invalid mode: 'U'"

Похоже, это связано с тем, что режим устарел, но я не совсем уверен, как это обойти. В их github в строке 308 по умолчанию используется буква U, и добавление новой переменной в часть x12reader приводит к ошибкам, поскольку она не принимает 3 аргумента.

Вот мой код, который до сих пор думал, что он прочитает файл в переменную, а затем зафиксирует важные аспекты.

import pyx12.x12file
import os

src_file = source_file_name

try:
    if not os.path.isfile(src_file):
        print('Could not open file "%s"' % (src_file))
        exit
    src = pyx12.x12file.X12Reader(src_file)  <-- errors here 
    for seg in src:
        # seg.
        if seg.get_seg_id() == 'ST':
            print(seg)
            # for value in seg.values_iterator():
            #     print(value)
            print(seg.get_value('ST03'))

except pyx12.errors.X12Error:
    print('"%s" does not look like an X12 data file' % (src_file))
except Exception as E:
    print(E)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
222
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я просмотрел исходный код и обнаружил, что «недопустимый режим: 'U'» происходит из-за использования обычного open() Python с режимом 'U', а не одного из доступных, таких как: 'w', 'r', 'rb' , ...

Однако, как вы можете видеть несколькими строками выше, это происходит только в том случае, если вы передаете файл в виде строки, представляющей его местоположение. В качестве альтернативы вы можете предоставить объект открытого файла, и в этом случае этой ошибки не должно произойти.

Например:

with open(src_file) as f:
    src = pyx12.x12file.X12Reader(f)

(при условии, что это небинарные файлы, иначе вам придется with open(src_file, 'rb') ...)

Другие вопросы по теме