Python基础知识(day7)

day7

今日内容

  • 深浅拷贝

  • 文件操作

  1. 深浅拷贝

    # 对于str/int/bool,深浅拷贝结果一样
    import copy
    a = 'llk'
    b = copy.copy(a) # 浅拷贝,拷贝第一层
    c = copy.copy(a) # 深拷贝,拷贝所有数据(可变)
    print("拷贝前" + a)
    print('浅拷贝' + b)
    print("深拷贝" + c)
    print(id(a),id(b),id(c))
    
    # 对于list/tuple/dict
    v1 = [1, 2, 3]
    v2 = copy.copy(v1) # 复制了v1的空壳,指向内存
    v3 = copy.deepcopy(v1) # 找到可变类型进行拷贝,但是只有外壳可变,所以也是拷贝外壳
    
    # 含嵌套的时候才有意义
    v1 = [1,2,[3,4]]
    v2 = copy.copy(v1) # 拷贝最外层,指向内存
    v3 = copy.deepcopy(v1) # 拷贝可变类型,拷贝最外层壳和里面的壳
    print(v1,v2,v3)
    print(id(v1),id(v2),id(v3))
    
    • 总结

      • 浅拷贝: 只拷贝第一层

      • 深拷贝: 拷贝嵌套层次中的所有的可变类型

      • 特殊情况

  2. 文件操作

    1. 文件操作格式

      # 利用open()方法打开文件,利用close()方法关闭
      # open(文件路径,mode=文件打开模式,encoding=编码格式)
      file_name = open ("log.txt", mode = 'r', encoding = 'utf-8')
      
      
    2. 文件打开模式

      """
      可读模式:rt(默认)打开文本类型,rb表示文件内容为二进制,文件不存在时报错
      可写模式:wt(默认)写入文本类型,wb写入二进制,打开文件存在时会清空重新写入,不存在时会新建
      追加模式: at(默认)在文件末尾追加文本类型,ab表示写入二进制,打开文件不存在时会新建
      可读写模式:r+/w+/a+
      """
      
    3. 文件方法

      • 读取文件的所有内容到内存

        file_object = open('log.txt',mode = 'r+',encoding = 'utf-8')
        data = file_object.read()
        
      • 从当前光标所在位置向后读取文件的两个字符

        date = file_object.read(2)
        
      • 读取文件的所有内容到内存,并按照每一行进行分割到列表中

        date_list = file_object.readlines()
        print(data_list)
        
      • 写入文件

        file_object.write("i am llk!")
        
      • 移动光标

        seek(self,offset:int,whence:int = 0)
        # offset代表文件指针偏移量,单位是字节
        # whence为0表示从文件开头,为1表示从当前位置,为2表示从末尾
        
      • tell()

        查找光标所在的位置

      • truncate(self,size:int = None)

        如果它有参数,则光标会跳到指定字节数后,然后把后面的文件全部清空

      • close()关闭文件,操作完必须关闭

原文地址:https://www.cnblogs.com/lilangkui/p/12506879.html