Python-数据类型-文件操作

it2022-05-11  63

内容回顾:-list:-append():用于在列表末尾添加新的对象 aList = [123, 'xyz', 'zara', 'abc'] aList.append(2009) print(aList) -count():用于统计某个元素在列表中出现的次数 aList = [123, 'xyz', 'zara', 'abc', 123] aList.count(123) print(aList) -extend():用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) aList = [123, 'xyz', 'zara', 'abc', 123] bList = [2009, "你好"] aList.extend(bList) print(aList) -index():用于从列表中找出某个值第一个匹配项的索引位置 aList = [123, 'xyz', 'zara', 'abc'] aList.index("xyz") print(aList) -insert():用于将指定对象插入列表的指定位置 aList = [123, 'xyz', 'zara', 'abc'] aList.insert(2, 993) print(aList) -pop():用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 aList = [123, 'xyz', 'zara', 'abc'] # aList.pop() aList.pop(2) print(aList -remove():用于移除列表中某个值的第一个匹配项 aList = [123, 'xyz', 'zara', 'abc', 'xyz'] print(aList) aList.remove(123) print(aList) -reverse():函数用于反向列表中元素 aList = [123, 'xyz', 'zara', 'abc', 'xyz'] aList.reverse() print(aList) -sort():用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数 aList = [123, 'xyz', 'zara', 'abc', 'xyz'] aList.sort() print(aList) tuple: - len():计算元组元素个数 tuple1, tuple2 = (123, 'xyz', 'zara'), (456, 'abc') len(tuple1) len(tuple2) 深拷贝和浅拷贝:  -深拷贝:拷贝所有  -浅拷贝:只拷贝一层 今天内容: 1. 可变不可变不可变:str,int,bool,tuple可变: list,dict,set2. 字典查找速度快,基于哈希索引问题1. 字典的key都能是什么?布尔值: true= 1; false=0 dict: -values():字典(Dictionary) values() 函数以列表返回字典中的所有值 dic = {'Name': 'Zara', 'Age': 7} dic.values() print(dic) -keys():字典(Dictionary) keys() 函数以列表返回一个字典所有的键 dic = {'Name': 'Zara', 'Age': 7} dic.keys() print(dic) -items():以列表返回可遍历的(键, 值) 元组数组 dic = {'Name': 'Zara', 'Age': 7} dic.items() print(dic) -get():返回指定键的值,如果值不在字典中返回默认值 dic = {'Name': 'Zara', 'Age': 27} dic.get("Name") dic.get("server") print(dic) -setdefault():和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值 dic = {'Name': 'Zara', 'Age': 27} dic.setdefault("Name") print(dic) -fromkeys():用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。 seq = ('name', 'age', 'sex') dic = dic.fromkeys(seq) print(dic) -update():把字典dict2的键/值对更新到dict里 dic = {'Name': 'Zara', 'Age': 7} dict2 = {'Sex': 'female' } dict.update(dict2) print(dic) -pop():删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 site= {'name': '老男孩', 'alexa': 10000} pop_obj=site.pop('name') print(pop_obj) -popitem():随机返回并删除字典中的一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常 site= {'name': '老男孩', 'alexa': 10000} pop_obj=site.popitem() print(pop_obj) set: -语法:di = {"k1","k2"} -1. names = {'龙哥','海角','老狗','成绩','小江','小高'} names.add('龙哥') print(names) -2.差集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = ['小高','海娇','小狗'] val = names.difference(boys) # names中存在,boys中不存在数据 print(val) val = boys.difference(names) # boys中存在,names中不存在数据 print(val) boys.difference_update(names) # boys中存在,names中不存在数据 print(boys) names.difference_update(boys) # boys中存在,names中不存在数据 print(names) -3.对称差集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = {'小高','海娇','小狗'} # {'龙哥','海角','老狗','成绩','小江'} # {'海娇','小狗'} # {'海娇','小狗','龙哥','海角','老狗','成绩','小江'} val = names.symmetric_difference(boys) print(val) names.symmetric_difference_update(boys) print(names) -4.在集合中删除指定值 names = {'龙哥','海角','老狗','成绩','小江','小高'} names.discard('龙哥') print(names) -5.求交集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = {'小高','海娇','小狗'} val = names.intersection(boys) print(val) names.intersection_update(boys) print(names) -6.并集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = {'小高','海娇','小狗'} val = names.union(boys) print(val) -7.判断是否无交集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = {'海娇','小狗'} # 有交集:False # 无交集:True val = names.isdisjoint(boys) print(val) -8.子集父集 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = {'龙哥','老狗'} # 是否是子集 val = boys.issubset(names) print(val) # 是否是父集 val = names.issuperset(boys) print(val) -9.删除集合元素 names = {'龙哥','海角','老狗','成绩','小江','小高'} v = names.pop() print(v) names.remove('老狗') print(names) names.discard('老狗1') print(names) -10.更新 names = {'龙哥','海角','老狗','成绩','小江','小高'} boys = ['龙哥1','老狗1'] names.update(boys) print(names) -11.集合- 元素,不可变 文件操作: -操作文件三要素: -1. 路径:D:\文件名称.txt -2. 编码:utf-8 -3.模式:       - r:以读方式打开,不能进行写操作,文件必须是已经存在的      - r+:以读写方式打开,文件必须是已经存在的      - w:以写方式打开,不能进行读操作,若文件存在,则先清空,然后重新创建;若不存在,则创建文件       - w+:以读写方式打开,若文件存在,则先清空,然后重新创建;若不存在,则创建文件      - a:以追加方式打开,不能进行读操作,把数据追加到文件的末尾;若不存在,则创建文件      - a+:以读写方式打开,把数据追加到文件的末尾;若不存在,则创建文件 -功能:       -obj.read():是最简单的一种方法,一次性读取文件的所有内容放在一个大字符串中,即存在内存中      -obj.write():把str写到文件中,write()并不会在str后加上一个换行符    -obj.seek():将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence 参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。    -obj.tell():返回文件操作标记的当前位置,以文件的开头为原点    -obj.close():关闭文件。python会在一个文件不用后自动关闭文件    -obj.flush():把缓冲区的内容写入硬盘 obj = open('美女.txt',mode='r+',encoding='utf-8') data = obj.read(1) # 情况一: obj.write('6') # 在最后继续写 情况二: obj.seek(1) obj.write('6') # 定位到指定位置 obj.close() print(data) -读取utf-8编码数据,【转换】成unicode(str)编码的数据 obj = open('D:\美女模特空姐护士联系方式.txt',encoding='utf-8',mode='r') content = obj.read() obj.close() print(content,type(content)) obj = open('D:\美女模特空姐护士联系方式.txt',mode='rb') content = obj.read() obj.close() print(content,type(content) -1. 文件在硬盘上时,一定是某种编码:utf-8,gbk......-2. rb, bytes, rb-3. r, 转换encoding= utf-8 r encoding:utf-8 -读文件 obj = open('D:\\n美女模特空姐护士联系方式.txt',encoding='utf-8',mode='r') content = obj.read() # 字符串类型 obj.close() print(content,type(content)) -只读: - open(文件路径, mode='rb')- open(文件路径, mode='r', encoding='utf-8') obj = open('D:\美女模特空姐护士联系方式.txt', encoding='utf-8', mode='r') content = obj.read() obj.close() print(content) obj = open('D:\美女模特空姐护士联系方式.txt', mode='rb') content = obj.read() obj.close() print(content) -只写: - open(文件路径, mode='wb') - open(文件路径, mode='w', encoding='utf-8') -示例: obj = open('美女.txt',mode='w',encoding='utf-8') obj.write("海角-贾敏") obj.close() obj = open('美女.txt',mode='wb') obj.write("海角-贾敏22222".encode('utf-8')) obj.close() -只追加: - open(文件路径, mode='ab') - open(文件路径, mode='a', encoding='utf-8') obj = open('美女.txt',mode='a',encoding='utf-8') obj.write("小红") obj.close() obj = open('美女.txt',mode='ab') obj.write("龙哥".encode('utf-8')) obj.close() obj = open('美女.txt', mode='r+', encoding='utf-8') data = obj.read() # 读取所有文件内容 data = obj.read(2) # r,字符;rb,字节 obj.write('字节或字符串') obj.seek(2) # 永远是字节,指定指针位置 obj.tell() # 读取当前指针的位置 #是否可写 obj.writable() #是否可读 obj.readable() #将内存中内容刷到硬盘 obj.flush() obj.tell() data = obj.readline() print(data) data = obj.readline() print(data) #截取文件内容,根据指针位置,只保留指针之前数据 obj.truncate() for line in obj: print(line) obj.close()

 

转载于:https://www.cnblogs.com/chengdajing/articles/7425159.html


最新回复(0)