day7
今日内容
-
深浅拷贝
-
文件操作
-
深浅拷贝
# 对于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))
-
总结
-
浅拷贝: 只拷贝第一层
-
深拷贝: 拷贝嵌套层次中的所有的可变类型
-
特殊情况
-
-
-
文件操作
-
文件操作格式
# 利用open()方法打开文件,利用close()方法关闭 # open(文件路径,mode=文件打开模式,encoding=编码格式) file_name = open ("log.txt", mode = 'r', encoding = 'utf-8')
-
文件打开模式
""" 可读模式:rt(默认)打开文本类型,rb表示文件内容为二进制,文件不存在时报错 可写模式:wt(默认)写入文本类型,wb写入二进制,打开文件存在时会清空重新写入,不存在时会新建 追加模式: at(默认)在文件末尾追加文本类型,ab表示写入二进制,打开文件不存在时会新建 可读写模式:r+/w+/a+ """
-
文件方法
-
读取文件的所有内容到内存
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()关闭文件,操作完必须关闭
-
-