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)