Read a data set record by record
With ZOAU, you can use the zoau_io Python API module to read data sets in a record-by-record approach. All classes in the module support the iterator protocol.
Scenarios
The following scenarios show how to read the sequential data set ${prefix}.MY.DATA
in different ways:
Scenario 1: Record-by-record binary read
from zoautil_py.zoau_io import zopen
with zopen(f"//'{prefix}.MY.DATA'", "r") as record_stream:
for record in record_stream:
print(record)
Scenario 2: Record-by-record text read using EBCDIC code page 1047 decoding
with zopen(f"//'{prefix}.MY.DATA'", "r", "cp1047") as record_stream:
for record in record_stream:
print(record)
Scenario 3: Get a list of capitalized records using a list comprehension
with zopen(f"//'{prefix}.MY.DATA'", "r", "cp1047") as record_stream:
capitalized = [ record.upper() for record in record_stream ]
Scenario 4: Record-by-record capitalized text read using a generator expression
with zopen(f"//'{prefix}.MY.DATA'", "r", "cp1047") as record_stream:
capitalized_generator = (record.upper() for record in record_stream)
for cap_record in capitalized_generator:
print(cap_record)
Scenario 5: Filter all the records shorter or equal to 32 bytes
def shorter_equal_32(obj):
if len(obj) <= 32:
return True
return False
with zopen(f"//'{prefix}.MY.DATA'", "r") as record_stream:
filter_itr = filter(shorter_equal_32, record_stream)
filtered = list(filter_itr)
Scenario 6: Get a sorted list of records in ascending order
with zopen(f"//'{prefix}.MY.DATA'", "r", "cp1047") as record_stream:
sorted = sorted(record_stream)