首页 > 其他分享 >文件的操作方式以及读写模式

文件的操作方式以及读写模式

时间:2022-10-08 21:56:49浏览次数:55  
标签:文件 encoding utf8 读写 模式 f1 txt open

1.文件的概念
2.文件的操作方式
3.文件的读写模式
4.文件操作模式
5.文件诸多方法
6.文件内容修改
7.文件光标移动


### 文件操作

```python
    1.文件的概念
        文件就是操作系统暴露给用户操作硬盘的快捷方式
            eg:双击一个文件,其实就是从硬盘将数据读取到内存的过程
           chrl+s保存文件,是将内存中的文件刷到硬盘上面进行保存
    2.代码打开文件的两种方式
        方式1:
        f = open(文路径,读写模式,encoding='htf8')
        # 表将打开这个文件的方式命名为变量f
        f.close()  # 关键这个文件
        方式2:
        with open('a.txt', 'r', encoding= 'utf8') as f1:
            with子代码快
        # 这句话的含义其实与方式一两句话的含义相同
        ps:with上下问管理好处在于子代码运行结束自动调用close方法关闭资源
    """
    open方法的第一个参数是文件路径 并且撬棍跟一些字母的组合会产生特殊的含义导致路径查找混乱,为了解决该问题可以在字符串的路径前面加字符r
        D:\a\n\t
    正确写法:r'D:\a\n\t

    with支持一次性打开多个文件
    with open() as f1,open() as f2,open() as f3
        子代码
"""

文件读写模式

    'r'  只读模式:只能读不能写
    1.文件路径不存在:会直接保存
    with open(r'b.txt', 'r', encoding='utf8') as f2:
        print(f2.read())
    2.文件路径存在:正常读取文件内容
    with open(r'a.txt', 'r', encoding='utf8') as f1:
        print(f1.read())

    'w'   只写模式:只能写不能看
    1.文件路径不存在:自动创建
    with open(r'b.txt', 'w', encoding='utf8') as f1:
        f1.write()
    2.文件路径存在:先清空文件内容 之后再写入
    with open(r'a.txt', 'w', encoding='utf8') as f2:
       f2.write('我不知道呀')

    with open(r'a.txt', 'w', encoding='utf8') as f2:
        f2.write('我不知道呀\n')
        f2.write('我不知道呀\n')
        f2.write('我不知道呀\n')
    强调:换行符需要自己添加 并且在后续数据读取比对的时候也一定要注意它的存在
     'a'  只追加模式:文件末尾增加数据
    1.文件路径不存在:自动创建
    with open(r'c.txt', 'a', encoding='utf8') as f4:
        f4.write('jlkjmklnkl')
    2.文件路径存在:自动在末尾等待追加内容
        with open(r'a.txt', 'a', encoding='utf8') as f3:
        f3.write('我感觉还能睡10个小时')

    当我们在编写代码的时候 有些部分不知道写什么具体代码 但是也不能空着不写
    这个时候可以使用关键字
        pass
        ...
    只补全语法不执行功能 本身没有任何的含义

文件操作模式

t  文本模式
	默认的模式,就是r,w,a
    1.只能操作文本文件
    2.读写都是以字符为单位
    3.需要指定encoding参数,如果不知道则会采用计算机默认的编码
    
    
    
b	二进制模式(bytes模式)
	不是默认的模式,需要自己指定:rb、wb、ab
    1.可以操作任意类型的文件
    2.读写都是以bytes为单位
    3.不需要指定encoding参数,因为他已经是二进制,所以不需要编码
ps:二进制模式与文本模式针对文件路径是否存在的情况下 规律是一样的!!!

文件诸多方法

    1.read()
        一次性读取文件内容,并且光标停留在文件末尾,继续读取则没有内容
       并且当文件内容比较多的时候,该方法还可以造成计算机内容溢出
    2.for循环
        一行行读取文件内容,避免内存溢出现象的产生
    代码展示:
        with open(r'a.txt', 'r', encoding='utf8') as f1:
        for i in f1:
            print(i)
    3.readline()
        一次只读一行内容
        with open(r'a.txt', 'r', encoding='utf8') as f1:
            print(f1.readline())
    4.readlines()
        一次性读取文件内容,会按照行数组织成列表的一个个数据值
        with open(r'a.txt', 'r', encoding='utf8') as f1:
            print(f1.readlines())
            # ['嘿嘿嘿\n', '嘿嘿嘿\n', '嘿嘿\n', '嘿嘿嘿']
    5.readable()
        判断文件是否具备读数据的能力
        with open(r'a.txt', 'r', encoding='utf8') as f1:
            print(f1.readable())  # True
    6.write()
        写入数据
        with open(r'a.txt', 'w', encoding='utf8') as f1:
            f1.write()
    7.writeable()
        判断文件是否具备写数据的能力
        with open(r'a.txt', 'w', encoding='utf8') as f1:
            f1.writable()
    8.writelines()
        接收一个列表,一次性将列表中所有的数据值写入
        with open(r'a.txt', 'w', encoding='utf8') as f1:
            f1.writelines(['jason', '18', 'yellow'])
            # jason18yellow
    9.flush()
        将内存中文件数据立刻刷到硬盘,等同于ctrl+s

文件光标的移动

    with open(r'a.txt', 'rb') as f1:
        # print(f1.read())  # 将文件以二进制的方式只读打印
        f1.seek(0, 0)
        print(f1.read())
        f1.seek()
        print(f1.read(0, 0))
     """
     seek(offset,whence)
        offset是位移量,以字节为单位
        whence是模式有:0,1,2
        0是基础文件的开头,
            文本和二进制都可以使用
        1是基于当前的位置
            只有二进制模式可以使用
        2是基于文件末尾
            只有二进制可以使用
     """

作业

2.利用文件充当数据库编写用户登录、注册功能
  文件名称:userinfo.txt
  基础要求:
  		 用户注册功能>>>:文件内添加用户数据(用户名、密码等)
       用户登录功能>>>:读取文件内用户数据做校验
      ps:上述功能只需要实现一次就算过关(单用户) 文件内始终就一个用户信息
print("""
输入编号1执行注册功能
输入编号2执行登录功能
""")
while True:
    count_unm = input('请输入您想要执行的编号/q退出').strip()
    if count_unm == '1':
        username = input('请输入您要注册的用户名>>>:').strip()
        password = input('请输入您设置的用户密码>>>:').strip()
        with open(r'suerinfo.txt', 'w', encoding='utf8') as l1:
            l1.write(f'{username}, {password}')
            print('注册成功')
    elif count_unm == '2':
        username = input('请输入你的用户名').strip()
        password = input('请输入你的密码').strip()
        with open(r'suerinfo.txt', 'r', encoding='utf8') as l2:
            l3 = l2.read()
            l3.split(',')
            if username in l3 and password in l3:
                print('登录成功')
            else:
                print('您的账号或者密码错误')
    elif count_unm.lower() =='q':
        break
    else:
        print('您输入的指令有误')

标签:文件,encoding,utf8,读写,模式,f1,txt,open
From: https://www.cnblogs.com/zhanghong1229/p/16770368.html

相关文章