file不再是中的内置名称3.x(open仍然有效)。
文件I / O的内部详细信息已移至标准库io模块,这也是以下内容的新主目录StringIO:
import io assertio.openis open # 内置是别名 buffer = io.StringIO() buffer.write('hello, ') # 返回写入的字符数 buffer.write('world!\n') buffer.getvalue() # “你好,世界!\ n”
文件模式(文本还是二进制)现在确定通过读取文件产生的数据类型(以及写入所需的类型):
with open('data.txt') as f: first_line = next(f) assert type(first_line) is str with open('data.bin', 'rb') as f: first_kb = f.read(1024) assert type(first_kb) is bytes
文本文件的编码默认为返回的。要明确指定编码,请使用关键字参数:locale.getpreferredencoding(False)encoding
with open('old_japanese_poetry.txt', 'shift_jis') as text: haiku = text.read()