课堂笔记
(1)列表,集合,元组,深、浅拷贝
# 1.数据类型的剩余的内置方法
# 2.字符编码# 3.文件处理# 1.1列表类型list1=['tank',18,'male',3.0,9,'广东','tank',[1,2]] list1.insert(2,'oldboy')print(list1)# count()查看某个值的个数print(list1.count('tank'))# index()查看值的索引print(list1.index('广东'),'---广东')list2=list1.copy()print(list2,'添加值前')# copy(),是属于把list1中的内存地址拷贝出来,然后会在链表中新建一个内存地址,放入其中# 下面是赋值,是把list1的内存地址给了list3,也就是说list3是指向list1的内存地址list3=list1print(list3,'添加值前')list1.append('jason')print(list2,'添加值后')print(list3,'后')# copy()属于浅拷贝:list1的列表中外层值改变对其不影响# 但是对list1中可变类型进行修改则会随之改变值list1[8].append('tank')print(list2)print(list3)# 深拷贝,把list1中的值完全拷贝到一个新的地址# 进而与list1完全隔离开from copy import deepcopylist4=deepcopy(list1)print(list4)# extend合并???????以下的为什么不能反转后赋值给另一个列表???list5=[1,2,3]list6=[4,5,6]list5 .extend(list6)print(list5)# reverse()反转# 列表反转之后还是列表# 元组与列表是非常相似的,区别在于元组的元素值不能修改,元组是放在括号里的# reverse只是对自己本身进行升降变化,并不会有任何返回值list5.reverse()print(list5)# sort()升序list8=[1,3,5,8,10,2,4,6]list8.sort()print(list8)# 降序list8.sort(reverse=True)print(list8)# 1.2字典的内置方法# 1.按照key取/存值dict1={'name':'lhhh','age':'18','sex':'male','school':'ahpu'}# 根据key取学校的值#print(dict1['school'])????有问题print (dict1.get('school','华南理工大学'))print (dict1.get('sal','该结果不存在'))# 成员运算print('name'in dict1)print('sal'in dict1)#删除del dict1['name']print(dict1)#POP()age=dict1.pop('age')print(dict1)print(age)dict1.popitem()print(dict1)#字典是无序的,是随机删除的,子不过目前还是在小计数池里#key,values,itemsprint(dict1.keys())print(dict1.values())print(dict1.items())# 键值对#循环for key in dict1: print(key)# update()print(dict1)dict2={"work":"student"}dict1.update(dict2)print(dict1)# 1.3元组类型# 在小括号内,以逗号隔开存放多个值# 注意是不可变类型,对元组进行修改内存地址就不是原来的地址了# 因为不可以修改所以在最开始就需要赋值tuple1=(1,2,3)#按索引取值print(tuple1[2])# 切片print(tuple1[0:6])print(tuple1[0:6:2])for line in tuple1: print(line)# 1.4集合类型# 在大括号内以逗号隔开可存放多个值# 但集合会默认去重功能# 所以一般使用集合来去重,在这里爬虫后去掉重复的数据就需要用到这个# 集合也是无序的,去重之后,原来元素的位置可能会发生变化set1={1,2,3,5,2,3,}print(set1)# 只是创建的时候类型是不确定的,只是在后来继续进行赋值的时候才会判断出是哪个类型set2=set()set3={}print(set2)print(set3)set3['name']='tank'print(type(set3))
(2)文件读写常规写法,with写法
a.注意需要添加requests库
方法:在命令行里写入
pip3 install requests
# 文件读写
# open(参数1:文件的绝对路径/文件的名字,参数2:操作模式,参数3:指定字符编码)# 对文本进行操作# f称之为句柄,能操作文件的对象# f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt',mode="wt",encoding="utf-8")# # wt=write text# f.write('hello')# write会重新生成一个文件,写入内容# #回收文件的资源# f.close()# 读文件# 因为前两个参数在源码中已有定义,所以可不写f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt',mode="rt",encoding="utf-8")res=f.read()print(res)f.close()# 文件追加append# 是在原来文件的末尾添加内容f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt','a',encoding="utf-8")f.write('\nhello jason')f.close( )# 默认at模式文件处理之上下文管理:with()
# with会自带close()功能# 会在with open (r'file1.xt','w',encoding='utf-8')as f: f.write('life is short')#读文件with open (r'file1.xt','r',encoding='utf-8')as f: res=f.read() print(res)#追加文件
(3)图片,视频的读 、写、追加
a.注意:获取图片的url,可通过右击复制图片地址等
b.注意: 在读写视频中,关于本地视频,是将其粘贴到所建的python文件夹下,之后创建出广告片.mp4这个文件,但是此时在python中是以文件的形式,
需要右击新建出的文件,选择show in Explorer,找到实际在电脑中所建立的文件,再打开就可以了 # 都是以二进制的形式读入到内存,然后再从内存读出到所见建的文件中 # import requests # res=requests.get('https://img.zcool.cn/community/017c395cfd98c5a801213ec23f5be0.jpg@2o.jpg') # print(res.content) # #写入图片 # with open('hua1.jpg','wb')as f: # f.write(res.content) # # 因为unicode 也是base型 # # 读取图片 # with open('hua1.jpg','rb')as f: # res=f.read() # print() # # 文件拷贝操作 # with open('hua1.jpg','rb')as f,open('beautiful.jpg','wb')as w: # res=f.read() # w.write(res) # # 读写视频 # # 由于一次打开文件所有的内容,若文件的大小超出内存的大小则会溢出 # # 所以采用以下的方法一行一行的读,一行一行的写入新文件中 with open('樱花味薯片概念片.mp4','rb')as f,open('广告片1.mp4','wb')as w: for line in f: w.write(line) # 此时会创建出广告片.mp4这个文件,但是此时在python中是以文件的形式, # 需要右击新建出的文件,选择show in Explorer,找到实际在电脑中所建立的文件,再打开就可以了 # res=f.read() # print(res) # w.write(res)
def login():
condition=0 while condition<3: user = input('请输你的用户名:').strip() pwd = input('请输入你的密码:').strip() name_info=f'用户名:{user}' pwd_info = f'密码:{pwd}' with open('user2.txt', 'r', encoding='utf-8')as f: res = f.read() list=res.split(',') if name_info in list: # 获取该用户名所在的位置 name_location=list.index(name_info) # 用户名的后一个元素就是密码,通过+1获得文件中该用户名对应密码的位置 # 由此实现用户名与密码绑定 if pwd_info ==list[name_location+1]: print('登陆成功') break else: print('用户名或密码错误') print('请重新输入用户名和密码') else: print('用户名不存在') condition=condition+1login()