python 文件操作与集合
对文件的操作
1、打开文件,获取句柄
2、根据句柄操作文件
3、关闭文件
现有文档 poem.txt
一天很短, 短得来不及拥抱清晨, 就已经手握黄昏。 一年很短, 短得来不及细品初春殷红窦绿, 就要打点素裹秋霜。 一生很短, 短的来不及享用美好年华, 就已经身处迟暮。 总是经过的太快, 领悟的太晚, 我们要学会珍惜。 珍惜人生路上的亲情、友情、 同事情、同学情、朋友情。 一旦擦身而过, 也许永不邂逅
对文件的基础操作
1 R = open('poem.txt', 'r') #以只读的发方式打开文件,可以不加'r',默认是只读 2 3 first_line = R.readline() #读取文件第一行,返回一个list 4 5 print(first_line) 6 7 Res = R.read() #获取除了第一行外余下的段落 8 9 print(Res) 10 11 R.close()
打开文件的模式
1 r #只读(默认) 3 w #只写【不可读,不存在则创建,存在则删除内容】 5 a #追加【不可读,不存在则创建,存在则只追加内容】
‘+’ 表示可以同时读写
1 r+ [可读、可写、可追加,如果打开的文件不存在,则报错] 2w+ [写读模式,已经存在的内容清空,可以读到写的内容] 3 a+ [追加读写模式,不存在则创建,存在则只追加内容]
文件的操作方法
1 R = open('poem.txt', 'r+', encoding = 'utf-8') 2 3 R.readline() #读第一行 4 5 R.readable() #判断文件是否可读,返回一个布尔类型 6 7 R.writable() #判断文件是否可写,返回一个布尔类型 8 9 R.encoding #打印文件编码格式 10 11 R.read() #读取所有文件内容,如果文件过大,慎重使用 12 13 R.readlines() #读取所有文件,返回一个list,元素是每行内容,慎重使用 14 15 R.tell() #获取当前文件的指针指向 16 17 R.seek() #把当前文件指向某个指针 18 19 R.write('短') #写入当前内容 20 21 R.flush() #写入文件后,立即从内存将内容写到磁盘 22 23 R.truncate() #清空文件内容 24 25 R.readlines(['短', '俄罗斯']) #将一个列表写入 26 27 R.close() #关闭文件
大文件的高效操作方法
1 R = open('poem.txt') 2 3 for line in R: 4 5 print(line)
with 使用
1 with open('poem.txt') as P: 2 3 for line in P: 4 5 print(line) 6 7 with open('poem.txt') as Pr, with open('poem_bak.txt', 'w') as Pw: 8 9 for line in Pr: 10 11 Pw.write(line)
集合:也是一种数据类型,特点是无序
1 number = [1, 2, 4, 5, 2, 4, 6] 2 3 s_number = set(number) #列表转变成集合 4 5 number1 = set([1, 2, 4, 5, 2, 4, 6]) #同上 6 7 number2 = {'linda', 'bluce', 'jack', 'rose'} #直接定义集合
集合的操作
1 number1 = {1, 3, 4, 5, 2, 8} 2 3 number2 = {2, 4, 9, 1} 4 5 number3 = {1, 4, 2} 6 7 print(number1.intersection(number2)) #取交集 8 9 print(number1 & number2) #取交集 10 11 print(number1.union(list2)) #取并集 12 13 print(number1 | number2) #取并集 14 15 print(number1.difference(number2)) #取差集,number1中存在,number2中不存在 16 17 print(number1 - number2) #取差集 18 19 print(number3.issubset(number1)) #判断number3是不是number1的子集 20 21 print(number1.issuperset(number3)) #判断number1是不是number3的父集 22 23 print(number1.isdisjoint(number2)) #判断是否有交集 24 25 print(number1.symmetric_difference(number2)) #对称差集,输出两个集合都没有的值 26 27 print(number1 ^ number2) #同上 28 29 number1.add(12) #添加元素 30 31 number1.update([24, 25, 26]) 32 33 number1.remove(2) #移除 34 35 number1.pop() #随机删除,并返回删除元素 36 37 number.discard('tom') #存在删除,不存在不做处理