Issue #10335: Add tokenize.open(), detect the file encoding using

tokenize.detect_encoding() and open it in read only mode.
This commit is contained in:
Victor Stinner 2010-11-09 01:08:59 +00:00
parent ae4836df6d
commit 58c0752a33
8 changed files with 54 additions and 22 deletions

View file

@ -29,6 +29,7 @@ import sys
from token import *
from codecs import lookup, BOM_UTF8
import collections
from io import TextIOWrapper
cookie_re = re.compile("coding[:=]\s*([-\w.]+)")
import token
@ -335,6 +336,20 @@ def detect_encoding(readline):
return default, [first, second]
_builtin_open = open
def open(filename):
"""Open a file in read only mode using the encoding detected by
detect_encoding().
"""
buffer = _builtin_open(filename, 'rb')
encoding, lines = detect_encoding(buffer.readline)
buffer.seek(0)
text = TextIOWrapper(buffer, encoding, line_buffering=True)
text.mode = 'r'
return text
def tokenize(readline):
"""
The tokenize() generator requires one argment, readline, which