3.4文件操作

文件操作

认识open
1.数据持久化
    1)背景:程序中数据默认保存在运行内存,程序运行结束后就会被销毁
            如果想让程序中的数据不被销毁,必须将数据通过文件的形式保存到磁盘中
    
    2)数据持久化又叫数据本地化,就是将程序中的数据存储到文件中的过程
    3)常见的数据持久化工具:数据库(.db、.sqlite)、json文件、plist文件、csv文件、excel文件、txt文件

2.文件操作 - 操作文件内容
基本操作流程:打开文件 -> 操作文件(读,写) -> 关闭文件
1)打开文件
open(file, mode='r', *, encoding=None)
a.file - 需要打开的文件路径(可以是绝对路径,也可以是相对路径)
        注意:相对路径如果是'./'开头,'./'可以省略
b.mode - 文件打开方式;由两组值决定使用的权限和操作文件时数据的类型
        第一组(决定权限):r,w,a     第二组(决定数据类型):t,b(打开文本文件用t和b都行,但二进制文件只能用b)
        r:只读,文件不存在则报错     w:只写,会先清空原文件,文件不存在不报错并自动创建     a:只写,直接加到内容后面
        +:读写,使用方法'r+','w+'或'a+'      t:字符串类型              b:字节()二进制类型
        使用时第一组必选一个,第二组没选就默认选't',例如:'rt','w','ba'
c.encoding  -  文件编码方式(文本文件文字存储时采用的文件字符集);
            只有在以t的方式打开文件时才需要设置encoding;
            一般设置为utf-8 -> 数字、字母使用1个字节;中文采用3个字节;😀采用4个字节
            'gdk' -> 中文采用4个字节
    
2)操作文件
a.读:功能相关
文件对象.read() - 从读写位置开始读到文件结束(获取整个文件内容),返回值就是文件内容
文件对象.readline() - 从读写位置到一行结束
f.seek(0)   #将读写位置移动到文件开头

b.写:功能相关
文件对象.write(数据)  -  将指定数据写入指定文件

3)关闭文件 - 文件操作后需关闭文件
文件对象.close

防止忘记关闭文件的方法
1:运行后自动关闭
result = open('files/test1.txt').read()
print(result)
2:在缩进外文件自动关闭
with open('files/test1.txt') as f:
    result = f.read()
    print(result)

例子:

open('./files/test1.txt')
open('files/test1.txt')

只读
f = open('files/test1.txt', 'r')
f.read()      #无错
f.write('abc')  #报错
只写 - a

f = open('files/test1.txt', 'a')
f.write('xxx')      #无错
f.read()    #报错

只写 - a
f = open('files/test1.txt', 'w')        #文件清空
f.write('xxx')      #无错
f.read()        #报错

打开不存在文件
open('files/test2.txt','r')     #报错
open('files/test3.txt','w')     #无错
open('files/test4.txt','a')     #无错

  +
f = open('files/test1.txt','r+')   #默认+的功能是a
f.read()

输入类型
f = open('files/test1.txt', 'rt')   #<class 'str'> xxxazcazc
f = open('files/test1.txt', 'rb')  #<class 'bytes'> b'xxxazcazc'
result = f.read()
print(type(result),result)

students = ('擦地', '单位', '得到', '双导')
f = open('files/test1.txt', 'at', encoding='utf-8')
for x in students:
    f.write(x)


f = open('C:/文件操作实现/旧文件夹/文本1.txt', 'at')
f.write('六道轮回,杀之不尽!')

try:
    f = open('C:/文件操作实现/旧文件夹/文本2.txt', 'wt', encoding='utf-8')
except:
    f = open('C:/文件操作实现/旧文件夹/文本2.txt', 'wt')


import os,test
print(test.times())
print(test.add_students())
print(test.add2())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值