FAQ
After applying 2to3.py to port a 2.6 script to 3.1, I get the following
error when running my script:
File "purekeyworddbtest.py", line 143, in __init__
f = codecs.open(EXCLUDED_KEYWORDS_FILE, 'rt', 'utf-8')
File "c:\Python31\lib\codecs.py", line 870, in open
file = builtins.open(filename, mode, buffering)
ValueError: can't have text and binary mode at once

I skimmed through python 3.0 release notes, and I haven't seen anything
indicating that codecs.open behaviour has changed in incompatible way (just
that it is no longer useful). Have I missed something?

Do I need to replace all codecs.open with the built-in open function? If so,
why does codecs.open still exist?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091107/c4b15757/attachment.htm>

Search Discussions

  • MRAB at Nov 7, 2009 at 1:11 pm

    Baptiste Lepilleur wrote:
    After applying 2to3.py to port a 2.6 script to 3.1, I get the following
    error when running my script:
    File "purekeyworddbtest.py", line 143, in __init__
    f = codecs.open(EXCLUDED_KEYWORDS_FILE, 'rt', 'utf-8')
    File "c:\Python31\lib\codecs.py", line 870, in open
    file = builtins.open(filename, mode, buffering)
    ValueError: can't have text and binary mode at once

    I skimmed through python 3.0 release notes, and I haven't seen anything
    indicating that codecs.open behaviour has changed in incompatible way
    (just that it is no longer useful). Have I missed something?

    Do I need to replace all codecs.open with the built-in open function? If
    so, why does codecs.open still exist?
    The documentation says of codecs.open() that "Files are always opened in
    binary mode, even if no binary mode was specified", but you've given the
    mode as 'rt', so you're asking it to open the file both in text mode
    _and_ binary mode. This is the same as in Python 2.6.

    If it works in 2.6 but not in 3.1, perhaps it's just that in 2.6 it
    ignores the 't' whereas in 3.1 it complains.
  • Baptiste Lepilleur at Nov 7, 2009 at 2:41 pm
    2009/11/7 MRAB <python at mrabarnett.plus.com>
    Baptiste Lepilleur wrote:
    [..]
    Do I need to replace all codecs.open with the built-in open function? If
    so, why does codecs.open still exist?

    The documentation says of codecs.open() that "Files are always opened in
    binary mode, even if no binary mode was specified", but you've given the
    mode as 'rt', so you're asking it to open the file both in text mode
    _and_ binary mode. This is the same as in Python 2.6.

    If it works in 2.6 but not in 3.1, perhaps it's just that in 2.6 it
    ignores the 't' whereas in 3.1 it complains.
    So I did miss something, but it was in 2.6. Thanks for the clarification.

    Though, I think the documentation is somewhat confusing in 3.x as it says
    that it opens the file in binary mode, but the opened file iterator returns
    str not bytes...
    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: <http://mail.python.org/pipermail/python-list/attachments/20091107/f2316934/attachment.htm>
  • Antoine Pitrou at Nov 7, 2009 at 6:10 pm

    Le Sat, 07 Nov 2009 12:56:54 +0100, Baptiste Lepilleur a ?crit?:
    After applying 2to3.py to port a 2.6 script to 3.1, I get the following
    error when running my script:
    File "purekeyworddbtest.py", line 143, in __init__
    f = codecs.open(EXCLUDED_KEYWORDS_FILE, 'rt', 'utf-8')
    File "c:\Python31\lib\codecs.py", line 870, in open
    file = builtins.open(filename, mode, buffering)
    ValueError: can't have text and binary mode at once
    I would suggest not using codecs.open() in 3.x, since the built-in open()
    will do the same thing, but faster.

    So just write:
    f = open(EXCLUDED_KEYWORDS_FILE, 'r', encoding='utf-8')
    and you'll get a fast file object giving you str (unicode) objects after
    an implicit utf-8 decoding of file data.

    Regards

    Antoine.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedNov 7, '09 at 11:56a
activeNov 7, '09 at 6:10p
posts4
users3
websitepython.org

People

Translate

site design / logo © 2022 Grokbase