Python 3.2 bug? Reading the last line of a file

tkpmep at hotmail.com tkpmep at hotmail.com
Wed May 25 19:25:55 EDT 2011


Thanks for the guidance - it was indeed an issue with reading in
binary vs. text., and I do now succeed in reading the last line,
except that I now seem unable to split it, as I demonstrate below.
Here's what I get when I read the last line in text mode using 2.7.1
and in binary mode using 3.2 respectively under IDLE:

2.7.1
Name	31/12/2009	0	0	0

3.2
b'Name\t31/12/2009\t0\t0\t0\r\n'

if, under 2.7.1 I read the file in text mode and write
>>> x = lastLine(fn)
I can then cleanly split the line to get its contents
>>> x.split('\t')
['Name', '31/12/2009', '0', '0', '0\n']

but under 3.2, with its binary read, I get
>>> x.split('\t')
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    x.split('\t')
TypeError: Type str doesn't support the buffer API

If I remove the '\t', the split now works and I get a list of bytes
literals
>>> x.split()
[b'Name', b'31/12/2009', b'0', b'0', b'0']

Looking through the docs did not clarify my understanding of the
issue. Why can I not split on '\t' when reading in binary mode?

Sincerely

Thomas Philips



More information about the Python-list mailing list