* 文件内光标的移动 * 文件数据的修改 * 函数简介

今日内容概要

  • 文件内光标的移动

  • 文件数据的修改

  • 函数简介

  • 函数语法结构

    今日内容详细

    文件内光标的移动

    """光标的移动指的是移动多少个字符和字节 最后鼠标的指针落在了哪里"""
    '例如 创建一共文件 a.txt 内容写是 a今天很热呀'
    	with open(r'a.txt', 'r',encoding='utf8')as f:
            data = f.read(4)  # a今天很
            print(data)
            在文本模式下read() 这个括号里写几 就读取几个字符
            
    	with open(r'a.txt','rb')as f:
            data = f.read(10)  # a今天很
            在二进制模式下read() 这个括号里写几 就读取几个字节 (英文是一个字节为单位 中文是三个字节为单位 )
            print(data.decode('utf8'))
            用解码的方式可以看到二进制下字节的体现,也可以直接用
            tell()  获取光标移动的字节
            验证:
    	with open(r'a.txt', 'r',encoding='utf8')as f:
            data = f.read(4)  # a今天很
            print(data)
            print(f.tell())  #10
            
            
            seek(offset, whence)
            #可以控制光标的移动
            offset  控制光标移动的位移量(字节为单位)
            whence  模式
            	0	基于文件开头移动多少字节 (文本模式 二进制模式都可以用)
                1	基于光标当前所在位置移动多少字节
                2	预计文件末尾移动多少字节
                试验:
    # with open(r'a.txt', 'r', encoding='utf8') as f: 
    #     f.seek(4, 0)
    #     print(f.read())  # 天很热呀
    #(4,0)whence用的是 0  offset 位置上是4 就是4个字节 a.txt 内容为 a今天很热  (4,0)也就移动了4个字节 在a今的后面 所有身下的就是 天很热呀
    
    # with open(r'b.txt', 'rb') as f:
    #     data = f.read(4)
    #     print(data.decode('utf8'))  # a今
    #     f.seek(-3, 1)
    #     print(f.read().decode('utf8'))  # 今天很热呀
    #     f.seek(-6, 2)
    #     print(f.read().decode('utf8'))  # 热呀
    #  (-3, 1) 1 是指目前光标在的位置 -3是往前移动3个字节
    #  (-6, 2) 2 是指光标在末尾位置  -6 往前移动6个字节
    

    文件内数据修改

    '''机械硬盘存储数据的原理
    	1.数据的修改 其实是覆盖写入
    	2.数据的删除 其实是占有态自由态'''
    代码修改文件的方式
    		1.覆盖写
        	先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入
    	2.重命名
        	先读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中
           再将原文件删除 将新的文件重命名为原文件
        #  方式1 覆盖写
    # with open(r'a.txt', 'r', encoding='utf8') as f:
    #     data = f.read()
    # new_data = data.replace('很热', '很冷')
    # with open(r'a.txt', 'w', encoding='utf8') as f1:
    #     f1.write(new_data)
    """优点:硬盘只占用一块空间
    缺点:数据量较大的时候会造成内存溢出"""
    #  方式2:重命名
    #  import os
    # 
    # with open('b.txt', 'r', encoding='utf8') as read_f, 
    #         open('.b.txt.swap', 'w', encoding='utf8') as wrife_f:
    #     for line in read_f:
    #         wrife_f.write(line.replace('很冷', 'hh'))
    # os.remove('b.txt')  # 删除文件
    # os.rename('b.txt.swap', 'b.txt')  # 重命名文件
        """
    优点:不会造成内存溢出
    缺点:有那么一段时间需要占用硬盘两个地方的空间(可能)   也可能是在内存中创建没有刷到硬盘
    """
        
    

    函数简介

    l1 = [1,2,3,4,5,6,7]
    # # print(len(l1))  # 方法一
    # a = 0
    # for i in l1:
    #     a += 1
    # print(a)  # 方法二
    '''函数可以避免多次统计代码的多行写入  在需要统计的地方用print(my_len())就可以代替'''
    
posted @   W日常  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示