文件修改方式与函数简介

文件修改方式与函数简介

文件内的光标移动

  • 文件读取

    1.在文本文件读取时,其实在read后面也可以跟数字用来定义读取位数
    2.文本模式读取
    with open(r'a.txt', 'r', encoding='utf8') as f:
        data = f.read(10)
        print(data)
    """abd乱花渐欲迷人眼"""
    """在文本模式读取时read后面跟的位数是字符串的位数"""
    
    3.二进制模式读取
    with open(r'a.txt', 'rb') as f:
        data = f.read(12)
        print(data)
        print(data.decode('utf8'))
    """b'abc\xe4\xb9\xb1\xe8\x8a\xb1\xe6\xb8\x90''"""
    """abc乱花渐"""
    
  • image

  • tell的使用

    1.tell也是文件读取的一种内置功能可以帮我们查看我们的光标在文件内处于哪个为止,但是tell所告诉你的位置是按照bytes来说明的一个字母大概是一个bytes的站位,而汉字则是最少三个bytes起步的。
    2.with open(r'a.txt', 'r', encoding='utf8') as f:
        data = f.read(10)
        print(f.tell())
    """24"""
    
  • seek(offset, whence)的简介

    1.offset
    	可以控制文件中光标的移动,可以自己定义数字但是一定要注意二进制模式中如果是汉字的话一个字就
      差不多是三个字节不过输入不完整的话那么就会好不留情的报错。
     2.  whence
    	控制光标移动的起始位置
        2.1		0		在起始位是0时那么就会自动将光标移动到整个文本文件的开头部位置
        2.2		1		在起始位是1时那么就不会改变光标原本在哪里就会继续在哪里
        2.3		2		在起始位是2是那么就会自动将光标移动到整个文本文件的末尾部位
    """
    0和1都必须在二进制模式下才可以使用
    offset是可以填写负数的
    """
    with open(r'a.txt', 'r', encoding='utf8') as f:
        real_data = f.read(10)
        print(real_data)
        f.seek(0, 0)
        print(f.read())
    """abc乱花渐欲迷人眼"""
    """abc乱花渐欲迷人眼, 浅草才能没马蹄"""
    
  • seek的使用

    1.当offset是0,whence也是0时,那么就会将光标自动定位到文本文件的开头部位开始如取数据
    with open(r'a.txt', 'r', encoding='utf8') as f:
        real_data = f.read(10)
        print(real_data)
        f.seek(0, 0)
        print(f.read())
    """abc乱花渐欲迷人眼"""
    """abc乱花渐欲迷人眼, 浅草才能没马蹄"""
    
    
    
    2.当offset是0,whence是1时,那么光标就会从原本所在位置开始读并不会变化位置
    with open(r'a.txt', 'r', encoding='utf8') as f:
        real_data = f.read(12)
        print(real_data)
        f.seek(0, 1)
        print(f.read())
    """欲迷人眼, 浅草才能没马蹄"""
    """, 浅草才能没马蹄"""
    
    
    
    3.当offset是0,whence是2时那么就会将光标自动跳到文件末尾所以第二个就没有东西可以帮你打印出来
    with open(r'a.txt', 'r', encoding='utf8') as f:
        real_data = f.read(10)
        print(real_data)
        f.seek(0, 2)
        print(f.read())
    """abc乱花渐欲迷人眼"""
    
    
    
    4.当offset是-12,whence是2时光标自动跳到文件末尾, 因为offset时负数所以从后往前读所以可以读到,在
    二进制往出打印时应该将编码格式设置成utf8
    with open(r'a.txt', 'rb') as f:
        real_data = f.read(12)
        print(real_data)
        f.seek(-12, 2)
        print(f.read().decode('utf8'))
    """b'abc\xe4\xb9\xb1\xe8\x8a\xb1\xe6\xb8\x90''"""
    """能没马蹄"""
    

机械硬盘存储原理

  • 机械硬盘的存储模式

    1.机械硬盘的存储原理一共有两种
    	1.1一种是数据修改,就是在这个文件上重新覆盖上新的数据然后将之前的数据全都覆盖掉,ctrl+s就是
      这样将以前的文件覆盖保存
    	1.2另一种则是数据假性删除,将文件标记成自由态并没有真正删除该文本只有在别的文件重新使用到该
      空间的时候才会被真正的覆盖删除掉
    

    image

文件数据修改

  • 修改文件的方法

    1.利用读写重新赋值的方法将文件中的数据进行修改
    with open(r'd.txt', 'r', encoding='utf8')as f:
        data = f.read()
    real_data = data.replace('铜雀春深锁二乔', '才敢与君绝')
    with open(r'd.txt', 'w', encoding='utf8')as real_f:
        real_f.write(real_data)
        
    
    2.利用函数os方法修改
    import os
    with open('demo.txt', 'r', encoding='utf8') as read_f, \
            open('.demo.txt.swap', 'w', encoding='utf8') as real_f:
        for line in read_f:
            real_f.write(line.replace('铜雀春深锁二乔', '冬雷震震,夏雨雪,才敢与君绝'))
    os.remove('demo.txt')  # 删除文件
    os.rename('.demo.txt.swap', 'demo.txt')  # 重命名文件
    
  • image

函数简介

  • 函数的概念

    函数是python为了代码最大程度地重用和最小代码冗余而提供的基本数据结构。 函数是一种设计工具,可能将复杂
    的程序,分解成可以管理的块。
    
    在python中可以创建四种函数:
    
    1.全局函数:定义在模块中
    2.局部函数:嵌套在其他函数中
    3.lambda函数:表达式
    4.方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用。
    

    image

  • 函数的调用形式

    1.语句形式:
    	func()
    2.表达式形式:
    	res = func2(10)
    3.函数当另一个函数的参数传入一个函数调用:
    	res = func3(func2(10))
    

    image

  • 函数的作用方向

    1.python创建、改变或者查找变量名都是在名称空间进行
    2.在代码中变量名被赋值的位置决定了其能被访问到的范围
    3.函数定义了本地作用域,而模块定义了全局作用域
    4.每个模块都是一个全局作用域,因此全局作用域仅限单个程序文件。
    5.每次对函数的调用都会创建一个新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量。
    6.所有的变量名都可以归纳为本地、全局或者内置的变量。
    7.内置名称空间:python解释器自带的名字,python解释器启动就会生成。
    8.全局名称空间:文件和模块级别定义的名字都会。
    9.局部名称空间:定义在函数内部的名字。局部名称空间只有在函数调用时才会生效,调用结束失效。
    10.变量名解析:LEGB原则,作用域越小优先级越高,某个变量,现在本地函数找,找不到去上一层函数找,再找不
    到就去模块全局变量找,再找不到就去系统内置的变量找,最后还是内找不到,抛出异常。
    
posted @ 2022-06-30 17:07  Joseph-bright  阅读(169)  评论(0编辑  收藏  举报