2014-09-29 61 views

回答

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) 
1

你可以创建自己的contextmanager:

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) 
+0

我不会说这个简单的方法,但它是一个有趣的方法,tnx – Bob 2014-10-08 23:58:30

1

如果确定有一个名为open你上面提到的方法,然后定义这样的功能

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

然后,开用这种新方法文件,

f = open_file('some_file.txt', 'r') 
相关问题