Как прочитать файл VSAM в Python3 - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть файл VSAM в системе Unix.Я хочу прочитать файл, используя макет этого файла в Python.Из .idx и .dta я скопировал .dta на свой локальный компьютер и попытался прочитать, используя приведенный ниже код,

infile = open("myfile.dta","r",encoding="ansi")
for line in infile:
    print(line)

без параметра кодирования, который выдает ошибку ..

"UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 1572"

Итак, чтобы устранить эту ошибку, я открыл файл в блокноте ++ и проверил кодировку.Теперь я могу прочитать файл, и он отображает данные (тем не менее я вижу несколько специальных символов).

Теперь основной вопрос заключается в том, как я могу прочитать эту запись файла по записи в соответствии с предоставленным макетом.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Есть порты Python 3 и Python 2 для z / OS .Похоже, что порт Python 3 в настоящее время не поддерживает доступ к «родным» или «классическим» файлам z / OS - те, которые не находятся в файловой системе z / Unix.

VSAM не маленькая тема.Если вы интересуетесь историей и базовыми технологиями, не стесняйтесь искать «что такое VSAM» в вашей любимой поисковой системе;TLDR заключается в том, что файлы VSAM аналогичны ISAM в том смысле, что они позволяют читать конкретную запись с заданным ключом.Конечно, у VSAM есть и другие возможности, и это решительно , а не ISAM, это просто аналогия.

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

Что нужно учитывать: вы по сути добавляете новое требование к работающей производственной системе, выполняяпоэтому требуется некоторый анализ, чтобы определить лучший механизм для удовлетворения ваших требований, не оказывая негативного влияния на эту существующую систему.Этот механизм будет учитывать существующие стандарты магазинов, безопасность, производительность, время персонала и т. Д. Возможно, этот анализ уже был проведен (я не могу знать, проводился ли он), но ваш вопрос указывает, что на вашей рабочей станции имеется копия одного файла VSAM.и последующие комментарии указывают на то, что вы хотите получить доступ к «многим таким файлам» в z / OS.

Как часто бывает, когда разработчики, не являющиеся мейнфреймами, должны получить доступ к некоторым или всем данным, содержащимся в существующемсистема мэйнфреймов, вы должны обсудить ваши и их требования, чтобы найти взаимоприемлемое решение.Я попытался обрисовать некоторые проблемы в этом ответе , этом ответе и этом ответе на этом вопросе , который имеет ссылки наCalcite (с которым у меня нет опыта) и возможности NFS Server в z / OS (с которыми у меня тоже нет опыта).Множество возможностей, множество вариантов, и я повторю здесь кое-что из нескольких связанных ответов:

Пожалуйста, поймите, что есть большая разница между ...

  • что технически возможно
  • что разрешено в вашем магазине
  • что может обеспечить надежное и поддерживаемое решение с учетом ваших требований

Это три оченьразные вещи.У некоторых из нас есть жизненный опыт, который заставляет нас не спешить с ответами на вопросы относительно того, что технически возможно, при отсутствии каких-либо упоминаний о том, что разрешено в вашем магазине, или о том, какие фактические бизнес-требования решаются.Уже более полувека многие магазины имеют стандартные решения технических проблем.Иногда решение таково: «не делайте этого, а вот что мы делаем вместо этого».Работа против рекомендаций вашего технического персонала или стандартов вашего магазина ограничивает карьеру.

0 голосов
/ 28 февраля 2019

Вы не сможете прочитать файл VSAM с помощью Python.Возможно, если вы позвоните в библиотеки C API, но это сомнительно.Вы можете использовать Java JZOS api и обратиться к стороне MVS.В большинстве систем z / OS установлена ​​Java.Если у вас не установлена ​​Java ... изучите COBOL.

...