Python在文本模式下为打开文件设置默认编码的简便方法?

时间:2014-09-29 23:32:40

标签: python character-encoding

是否有一种简单的跨平台方法可以在Python中为打开文件(文本模式)设置默认编码,因此您不必编写

open(filename, 'r', encoding='utf-8')

每次都可以简单地写

open(filename, 'r')

3 个答案:

答案 0 :(得分:1)

您可以创建自己的上下文管理器:

import contextlib

@contextlib.contextmanager
def start_transaction(f ,mode="r", enc="utf-8"):
    f = open(f, mode, encoding=enc)
    try:
        yield f
    except:
        raise
with start_transaction("in.txt") as f:
    for line in f:
        print (line)

答案 1 :(得分:1)

from io import open  # for python2 compatibility

old_open = open
def open(*args, **kwargs):
    encoding = kwargs.pop('encoding', 'utf8')
    return old_open(*args, encoding=encoding, **kwargs)

答案 2 :(得分:1)

如果您确定上面提到的名为open的方法,那么定义这样的函数

import functools    
open_file = functools.partial(open, encoding='utf-8')

然后,用这个新方法打开文件,

f = open_file('some_file.txt', 'r')