打开方法
打开模式 | 执行操作 |
---|---|
‘r’ | 以只读方式打开文件(默认) |
‘w’ | 写入的方式打开,会覆盖已存在的文件 |
‘x’ | 如果文件已经存在,使用此模式打开将引发异常 |
‘a’ | 以写入模式打开,如果文件存在,则在末尾追加写入 |
‘b’ | 二进制模式 |
‘t’ | 以文本模式打开(默认) |
‘+’ | 可读写模式(可添加到其他模式中使用) |
‘U’ | 通用换行符支持 |
文件对象方法
文件对象方法 | 执行操作 |
---|---|
f.close() | 关闭文件 |
f.read([size=-1]) | 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
f.readline([size=-1]) | 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符 |
f.write(str) | 将字符串str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象 |
f.seek(offset, from) | 移动光标,至from(0:文件首,1:当前,2:文件尾)offset:偏移(以字节计算) |
f.tell() | 返回光标当前位置 |
f.truncate([size=file.tell()]) | 截取文件到size个字节,默认是截取到文件指针当前位置 |
举例:
f = open(文件名路径,打开方式,encoding ='utf-8') #修改文件编码方式为utf-8.
f = open(add1, encoding='utf-8')
f.close() #关闭文件
等效于
with open(add1, encoding='utf-8') as f:
# 对文件执行操作
for each in f: # 遍历文件每一行
print('each')
#此处跳出了with,对文件的操作结束,文件自动关闭
但是用第二种更好,语法更加清晰.
第一种搞不好什么时候就给你把文件自动关闭咯
查看
文件内容的查看是以光标位置进行的,所以有对于光标的指令
for each in f:
print(each) #按行输出,文本文件一次取一行
f.read(size == -1) #从文件读取size个字符,无size货或给定负值时读取剩余所有字符(像个书签)
f.tell() #返回当前(书签)在文件中的位置(位置按字节计算)
f.readline([size = -1]) #从文件读取一行,如果有参数size,则从文件读取光标后size个字节
f.write(str) #将字符串写入f文件
f.writelines(seq) #向文件写入字符串序列seq
#pickle模块(集合可以将所有的类型转换为二进制永久存储)进去啥样出来还是啥样很优雅
import pickle
my_list = [123,3.14,'小甲鱼',['another list']]
# 写入.dump()
pickle_file = open('my_list.pkl','wb') # wb:二进制写入
pickle.dump(my_list,pickle_file) # 将my_list列表以二进制方式放入pickle_file文件
# 读取.load()
pickle_file = open('my_list.pkl','rb') # 二进制只读打开
my_list2 = pickle.load(pickle_file) # 将文件内容加载到列表