[CentralOH] Weird issue reading a Mainframe file with Python
Andrew Kubera
akubera at kent.edu
Wed May 20 17:30:29 CEST 2015
of course… with correct indentation at the while loop… 😫
> On May 20, 2015, at 11:28 AM, Andrew Kubera <akubera at kent.edu> wrote:
>
> It looks like read() is returning a string, then the for loop is actually looping through that string one character at a time.
>
> If each of the records are on one line, you can simply iterate over the file: for line in fp: ...
>
> If not, you should turn your loop into:
>
> while True:
> line = fp.read(26)
> if len(line) < 26: break
> ...
>
> Or be fancy with a generator (I assume that’s in python2.4?):
>
> def next_record(file):
> while True:
> line = fp.read(26)
> if len(line) < 26: raise StopIteration
> <https://docs.python.org/2/library/exceptions.html#exceptions.StopIteration>
> yield line
>
> for record in next_record(fp):
> ...
>
> - Andrew Kubera
>
>
>> On May 20, 2015, at 11:04 AM, Joshua Kramer <joskra42.list at gmail.com <mailto:joskra42.list at gmail.com>> wrote:
>>
>> Hello all!
>>
>> I have a rather bizarre issue reading files that came from an IBM
>> Mainframe. I am on a Linux server, FTP'ing the files from the
>> Mainframe, and running a Python script. It seems like the Python
>> script always reads just one byte at a time from the file! For
>> example, if you have a file with records like this (this is two
>> records, each one being of length 26):
>>
>> 00423SMITH JOHN 126400100423SMITH ROBERT1264001
>>
>> If you open this file with any text editor on Linux, it appears as it is there.
>>
>> If I do this in Python:
>>
>> fp = open("FILE.DAT", "rb")
>> for line in fp.read(26):
>> print "Record is: " + line
>>
>> Then what I will get is this:
>> Record is: 0
>> Record is: 0
>> Record is: 4
>> Record Is: 2
>> Record Is: 3
>> ...etcetera.
>>
>> I wrote the same program in C, and I got the results I expected- not
>> these results. So I have reason to believe that the file is good.
>>
>> I am using Python 2.4.3. (Unfortunately, stuck on an ancient RedHat server...)
>>
>> What am I missing here?
>>
>> Thanks!
>> -JK
>> _______________________________________________
>> CentralOH mailing list
>> CentralOH at python.org <mailto:CentralOH at python.org>
>> https://mail.python.org/mailman/listinfo/centraloh
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/centraloh/attachments/20150520/b105bf4c/attachment-0001.html>
More information about the CentralOH
mailing list