У меня возникли проблемы с загрузкой данных 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)






Я просмотрел исходный код и обнаружил, что «недопустимый режим: 'U'» происходит из-за использования обычного open() Python с режимом 'U', а не одного из доступных, таких как: 'w', 'r', 'rb' , ...
Однако, как вы можете видеть несколькими строками выше, это происходит только в том случае, если вы передаете файл в виде строки, представляющей его местоположение. В качестве альтернативы вы можете предоставить объект открытого файла, и в этом случае этой ошибки не должно произойти.
Например:
with open(src_file) as f:
src = pyx12.x12file.X12Reader(f)
(при условии, что это небинарные файлы, иначе вам придется with open(src_file, 'rb') ...)