您可能知道,Python的io.open
函数在非二进制模式下创建的文件流(例如io.open("myFile.txt", "w", encoding = "utf-8"
)不接受非unicode
字符串。由于某种难以解释的原因,我想对这些文件流的write
- 方法进行修补,以便将string
转换为unicode
在调用实际的write
- 方法之前。我的代码目前看起来像这样:
import io
import types
def write(self, text):
if not isinstance(text, unicode):
text = unicode(text)
return super(self.__class__, self).write(text)
def wopen(*args, **kwargs):
f = io.open(*args, **kwargs)
f.write = types.MethodType(write, f)
return f
但是,它不起作用:
>>> with wopen(p, "w", encoding = "utf-8") as f:
>>> f.write("test")
UnsupportedOperation: write
由于我无法真正研究那些built-in
- 方法,我不知道如何分析问题。
提前致谢!