
python at mrabarnett
Nov 7, 2009, 5:11 AM
Post #2 of 4
(115 views)
Permalink
|
|
Re: What is the correct way to port codecs.open to python 3.1?
[In reply to]
|
|
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. -- http://mail.python.org/mailman/listinfo/python-list
|