day09_文件操作

文件打开方式

三种模式

# r  只读,文件必须存在
# w  只写(清空),有文件则清空打开,无文件则新建
# a  追加写,有文件则打开,并将光标定位到文件末尾,无文件则新建
# a+ 可读可写
# w+ 可读可写(清空),无文件则新建
# a+ 可读可写(追加写),无文件则新建
fr = open('user_info.txt','a',encoding='utf-8')
print(fr.readable())  # 判断是否可读
fr.read()  # 无参数,默认读取整个文件,有参数则读取指定字符个数
fr.readline()  # 从光标所在位置,读取一行
fr.readlines()  # 从当前光标位置,读取所有行,以列表方式存储
fr.close  # 关闭操作系统与python打开文件所占的内存
fw = open('user_info.txt','w',encoding='utf-8')
print(fw.writeable())  # 判断是否可写
fw.write(s:str)  # 必须有参数,并且只能是字符串,写入文本
fw.writelines(lines:iterable[AnyStr])  # 将只包含字符串的可迭代对象中的元素逐个取出,写入同一行
fw.close
fa =open('users_info.txt','a',encoding='utf-8')
print(fa.writeable())  # 判断是否可写
fa.write(s:str)  # 必须有参数,并且只能是字符串,写入文本
fa.writelines(lines:iterable[AnyStr])  # 将只包含字符串的可迭代对象中的元素逐个取出,写入同一行
fa.close

两种方式

不单独使用,与r,w,a,r+,w+,a+连用

文本文件t

一般省略,打开文本文件,如txt

音频文件b

打开音频文件,如mp4,npg,jpg等,没有字符编码

只能读取二进制文本

写入时,需转换成二进制才行

fr = open('users_info.jpg','rb')
data = fr.content
print(data)
fw = open('uses_info.jpg','wb')
fw.write(data)
fr.close

文件管理

由于每次打开文件都套添加f.close()关闭文件,比较麻烦,所以设计了新的语法格式,with open() as f:

在缩进内的代码不会关闭文件,在缩进之外,自动关闭操作系统对文件的内存调用

with open('users_info.txt','a',encoding='utf-8') as fa:
    fa.write('hahaah')

修改文件的两种方式

同时打开两个文件

with open('users_info.txt','r',encoding='utf-8') as fr,\
		open('users_info_swap.txt','w',encoding='utf-8') as fw:
    # 读写方式一
    data = fr.read()  # 全部读取,遇到文件较大时,会比较消耗内存,并且耗时
    fw.write(data)  # 一次性写入,遇到文件较大时,会比较消耗内存,并且耗时
    
    # 读写方式二
    for line in fr:  # 逐行读入
        fw.write(line)  # 逐行写入
    
    import os
    os.remove('users_info.txt')  # 删除原文件
    os.rename('users_info.swap.txt','users_info.txt')  # 将缓存文件改名为原文件名

先后打开同一个文件

with open('users_info_txt','r',encoding=utf8) as fr:
    data = fr.read()
with open('user_info.txt','w',encoding='utf8') as fw:
    fw.write(data)
posted @ 2019-09-19 11:43  W文敏W  阅读(146)  评论(0编辑  收藏  举报