Python集合&文件操作Day03

集合

主要作用: 

  1. 去重
  2. 关系测试, 交集\差集\并集\反向(对称)差集
 1 #集合定义
 2 list_1 = [1,2,3,4,5,3,6,]
 3 list_dict = {1,2,3,4,5,6,7,6,8}
 4 #集合操作
 5 list_1 = set(list_1) #创建一个唯一的字符集---去重
 6 print(set(list_dict)) #创建一个唯一的字符集---去重
 7 print(list_1,type(list_1))
 8 list_2 = set([2,6,0,66,22,8,4])
 9 print(list_1.intersection(list_2)) #交集 -取出重复的数字
10 print(list_1.union(list_2)) #并集 去重-统一显示 {0, 1, 2, 3, 4, 5, 6, 66, 8, 22}
11 print(list_1.difference(list_2)) #差集  取出list_1有,list_2没有的
12 list_3 = set([1,3,6])
13 print(list_3.issubset(list_1)) #子集  list_3的值在list_1全有
14 print(list_1.issuperset(list_3))#父集
15 print(list_1.symmetric_difference(list_2))#对称差集-list_1,list_2互相没有的取出来
16 list_4 = set([7,8,9,3])
17 print(list_3.isdisjoint(list_4)) #返回True,如果两个参数有一个零交叉点
18 print("-------------")
19 print(list_1 & list_2) #交集
20 print(list_1 | list_2) #并集
21 print(list_1 - list_2) #差集 list_1不带list_2
22 print(list_1 ^ list_2) #对称差集
23 
24 #集合操作
25 print("-------------")
26 list_1.add(999) #添加
27 print(list_1)
28 list_1.update([777,888]) #添加多项f
29 print(list_1)
30 print(list_1.remove(999)) #删除  返回 none
31 print(list_1)
32 print(list_1.pop()) #随机删除
33 print(list_1.discard(888)) #删除  返回 none
集合

文件操作

open函数,该函数用于文件处理

操作文件时,一般需要经历如下步骤:

  • 打开文件
  • 操作文件
  • 关闭文件

准备文件保存为file.txt格式:

 1 北国风光,千里冰封,万里雪飘。
 2 
 3 望长城内外,惟余莽莽;大河上下,顿失滔滔。
 4 
 5 山舞银蛇,原驰蜡象,欲与天公试比高。
 6 
 7 须晴日,看红装素裹,分外妖娆。
 8 
 9 江山如此多娇,引无数英雄竞折腰。
10 
11 惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
12 
13 一代天骄,成吉思汗,只识弯弓射大雕。
14 
15 俱往矣,数风流人物,还看今朝。
沁园春·雪

文件基本操作

1 f = open('file.txt', 'r')  #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读
2 frist_line = f.readline()  # 获取文件的第一行内容,返回的是一个list
3 print(frist_line)  # 打印第一行
4 res = f.read()  # 获取除了第一行剩下的所有文件内容
5 print(res)
6 f.close()  # 关闭文件

打开文件的模式有:
  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
  • rU
  • r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
  • rb
  • wb
  • ab
 1 f = open("file.txt",'r+',encoding="utf-8") #文件句柄-文件的内存对象(文件名,字符集,大小。。)
 2 print(f.read())  #读取整个文件
 3 print(f.readline()) #读取一行
 4 print(f.readlines()) # 按行存成列表
 5 lens = len(open('file.txt','rU').readline())
 6 print(lens) #打印文件共有多少行
 7 for i in f.readlines()[2:lens]: # 指定文件行数读取   #从第2行到结尾
 8     print(i)
 9 print(f.readline())
10 print(f.tell()) #计算字节数
11 f.seek(3) #返回光标
12 print(f.readline())
13 print(f.encoding)  #打印字符集
14 print(f.fileno()) #返回文件句柄在内存的编号 3
15 print(f.name) #打印文件名
16 print(f.seekable()) #判断文件光标是否能移动 True
17 print(f.readable()) #判断文件是否可读  True
18 print(f.writable()) #判断文件是否可写 False
19 f.flush()   #刷新
20 f.truncate(10) #文件清空   不传入值清空文件,传值从头开始截断
文件操作函数
1 #刷洗方法使用 进度条
2 import sys,time
3 for i in range(50):
4     sys.stdout.write('#')
5     sys.stdout.flush()  #刷新  进度条
6     time.sleep(0.1)

文件循环操作

1 f = open("file.txt", 'r', encoding="utf-8")
2 f_new = open('file.bak', 'w', encoding='utf-8')
3 for line in f:
4     if '江山如此多娇,引无数英雄竞折腰' in line:
5         line = line.replace('江山如此多娇,引无数英雄竞折腰', '春色满园关不住,一枝红杏出墙来.')  # if username == line .strip():
6     f_new.write(line)
7 f.close()
8 f_new.close()
文件循环

with使用:

  • 在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:
 1 # 同时打开多个文件格式:
 2 # with open('file.txt', 'r', encoding='utf-8') as f, open('file.bak', 'r', encoding='utf-8') as j:
 3 
 4 with open('file.txt', 'r', encoding='utf-8') as f:  # 自动关闭文件
 5     for line in f:
 6         print(line)
 7 # 同时打开多个文件建议写成
 8 with open('file.txt', 'r', encoding='utf-8') as f, \
 9         open('file.bak', 'w', encoding='utf-8') as j:
10     for line in f:
11         if '江山如此多娇,引无数英雄竞折腰' in line:
12             line = line.replace('江山如此多娇,引无数英雄竞折腰', '春色满园关不住,一枝红杏出墙来.')  # if username == line .strip():
13         j.write(line)
with使用

资料补充

猜你喜欢

转载自www.cnblogs.com/Baylor-Chen/p/9008445.html
今日推荐