1.内容回顾
2.面试题
公司线上的系统用的什么?
python2和python3的区别?
运算符
v = 1 or 0 and 8 or 9
print(v)
列举python的数据类型中都有哪些方法?(重要)
只有在嵌套的情况下深浅拷贝才有不同
#str + int + bool 因为都是不可变类型,拷贝结果是一样的,内存地址一样
a = "yanan"
b = copy.copy(a)
c = copy.deepcopy(a)
#list + set + dict 找到里面所有可变类型的copy一遍
深拷贝
#深拷贝例子:只拷贝可变类型,不可变类型的内存地址不拷贝,并指向不可变类型的地址
import copy
v1 = [1,2,3,{"k1":123,"k2":456}]
v2 = copy.deepcopy(v1)
print(v1 == v2) #True
print(v1 is v2) #False
print(v1[0] is v2[0]) #True
print(v1[3] == v2[3]) #True
print(v1[3] is v2[3]) #False
#练习二:
v1 = [1,2,3]
v2 = copy.deepcopy(v1)
print(v1 == v2) #True
print(v1 is v2) #False
print(v1[0] is v2[0]) #True
特殊情况(不重要)
#元组嵌套列表,浅拷贝ID一样,深拷贝ID不一样
import copy
v1 = (1,2,3,[1,2,3],4)
v2 = copy.copy(v1)
print(id(v1),id(v2)) #浅拷贝id值一样
v3 = copy.deepcopy(v1)
print(id(v1),id(v3)) #深拷贝id值不一样
打开
f = open("文件路径",mode = "r / w / a",encoding = '文件原来写入时定义的编码')
操作
r:只读不写
#打开文件
file_object = open('log.txt',mode="r",encoding='utf-8')#r,read(只读);a,append(追加)
# 读取文件放在内存中(如果文件较大,内存较小,容易爆仓)
content = file_object.read()
content = file_object.read(3) #读光标位置后的两个字节
concent = file_object.readlines() #按照每一行进行分割到列表中
print(content)
# 常用读取文件的方法(以后读取一个特别大的文件)
for line in file_object: #读取每行
line = line.strip() #去除换行符
print(line)
#关闭文件
file_object.close()
w:只写不读,清空文件重新写入,或创建新文件(文件不存在则新建)
#打开文件
file_object = open('log.txt',mode="w",encoding='utf-8')
#写内容
file_object.write('yanan')
file_object.write('周杰伦') #从光标位置往后加,结果为yanan周杰伦
#关闭文件
file_object.close()
a:只追加不读,文件不存在则新建
#打开文件
file_object = open('log.txt',mode="a",encoding='utf-8')
#写内容
file_object.write('yanan')#不管光标位置,永远只追加在最后
#关闭文件
file_object.close()
关闭,内存会保存文件
每次操作完成后记得关闭
#关闭文件
file_object.close()
with...as..关闭文件
with open('log.txt', mode="r", encoding="utf-8") as file_object:
data = file_object.read() ##with...as执行完语句后自动关闭文件
print(data)
seek()移动光标位置
tell()获取光标当前所在位置,断点续传中会使用到这个
file_object = open('log.txt',mode="rb")#打开文件
file_object.seek(3) #光标移动到第三个字节
data = file_object.tell() #获取光标目前的位置
print(data) #输出为3
#关闭文件
file_object.close()
```
flush,强制将内存中的数据写入到硬盘上
file_object = open('log.txt', mode="a", encoding="utf-8")
while True:
val = input("请输入:")
file_object.write(val)
file_object.flush() #每次输入都会把内容从内存上写入到硬盘中,文件中才会显示
file_object.close()
不能直接在硬盘上对文件进行修改
可以把文件读取到内存中,在内存中修改完成后再写入到硬盘上
with open('log.txt', mode="r", encoding="utf-8") as file_object:
data = file_object.read() #将文件的内容读取到内存上
new_data = data.replace("yanan","zhoujielun")#修改文件内容
with open('log.txt', mode="w", encoding="utf-8") as file_object:
file_object.write(new_data) #再将文件写入到硬盘中,注意mode为W,直接覆盖原文件
比内存大的文件需要修改
f1 = open("log.txt",mode="r",encoding="utf-8") #打开需要修改的原文件
f2 = open("logss.txt",mode="w",encoding="utf-8") #打开一个新文件
for line in f1: #循环每一行
new_line = line.replace("zhu","li") #将每一行修改
f2.write(new_line) #写入到新文件中
f1.close() #关闭文件一
f2.close() #关闭文件二
#优化代码后:
with open("log.txt",mode="r",encoding="utf-8") as f1,open("logss.txt",mode="w",encoding="utf-8") as f2:
for line in f1:
new_line = line.replace("zhu","li")
f2.write(new_line)
原文:https://www.cnblogs.com/lynlearnde/p/11637286.html