[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