open(filename, mode, encoding=None)
f = open('workfile', 'w', encoding='utf-8')
第一个实参是文件名字符串,第二个实参是包含描述文件使用方式字符的字符串,包括:
'r'表示文件只能读取;'w'表示只能写入(现有同名文件会被覆盖);'a'表示打开文件并追加内容,任何写入的数据会自动添加到文件末尾;'r+'表示打开文件进行读写
省略时默认'r'
在处理文件对象时,最好使用 with
关键字。优点是,子句体结束后,文件会正确关闭,即便触发异常也可以。而且,使用 with
相比等效的 try
-finally
代码块要简短得多
with open('workfile', encoding="utf-8") as f: read_data = f.read()
如果没有使用 with
关键字,则应调用 f.close()
关闭文件,即可释放文件占用的系统资源
文件对象的方法
- close:关闭文件
- read:读取文件的内容。可以把结果赋给一个变量
读取一些数据,并返回字符串(文本模式)或字节串对象(二进制模式下)
f.read(size):size是可选的数值参数。省略 size 或 size 为负数时,读取并返回整个文件的内容;文件大小是内存的两倍时,会出现问题。size 取其他值时,读取并返回最多 size 个字符(文本模式)或 size 个字节(二进制模式)。如已到达文件末尾,f.read()
返回空字符串(''
)
>>>f.read() 'This is the entire file.\n' >>> f.read() ''
- readline:只读取文本文件中的一行
字符串末尾保留换行符(\n
),只有在文件不以换行符结尾时,文件的最后一行才会省略换行符
只要 f.readline()
返回空字符串,就表示已经到达了文件末尾,空行使用 '\n'
表示,该字符串只包含一个换行符
>>> f.readline() 'This is the first line of the file.\n' >>> f.readline() 'Second line of the file\n' >>> f.readline() ''
读取多行,循环遍历整个文件对象
for line in f: print(line, end='')
如需以列表形式读取文件中的所有行,可以用 list(f)
或 f.readlines()
。
- truncate:清空文件,请谨慎使用
- isatty:
tell:
返回整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节数,以及文本模式下的意义不明的数字- write('stuff'):将“stuff”写入文件
f.write(string)
把 string 的内容写入文件,并返回写入的字符数
>>> f.write('This is a test\n')
15
- seek(0):将读写位置移动到文件开头
f.seek(offset, whence)
可以改变文件对象的位置。通过向参考点添加 offset 计算位置
whence 值为 0 时,表示从文件开头计算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。省略 whence 时,其默认值为 0,即使用文件开头作为参考点
使用 json
保存结构化数据
Python 支持 JSON (JavaScript Object Notation) 这种流行数据交换格式,json
标准模块采用 Python 数据层次结构,并将之转换为字符串表示形式;这个过程称为 serializing (序列化)。
从字符串表示中重建数据称为 deserializing (解序化)。在序列化和解序化之间,表示对象的字符串可能已经存储在文件或数据中,或通过网络连接发送到远方 的机器
>>> import json >>> x = [1, 'simple', 'list'] >>> json.dumps(x) '[1, "simple", "list"]'
dumps()
函数还有一个变体, dump()
,它只将对象序列化为 text file 。因此,如果 f
是 text file 对象,可以这样做:
json.dump(x, f)
要再次解码对象,如果 f
是已打开、供读取的 binary file 或 text file 对象:
x = json.load(f)
标签:文件,读取,read,读写,file,字符串,size From: https://www.cnblogs.com/tttianII/p/16690083.html