Python集合&文件操作Day03

Posted baylor-chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用

 

资料补充

ASCII 默认8位 只能存英文&特殊字符,不能存储中文,unicode 万国码  默认2个字节,unicode被称为万国码,每个国家都的语法他都含有,utf-8是万国码的扩展集
utf-8 可变长的字符集,所有英文字符依然按ascii存储,所有中文字符统一3个字节。
 
python2  —python 直接转
字符编码的转换都是有规律的一个gbk的编码想转换成utf-8需要先转为unicode作为中间者,然后在转为utf-8
当然在转换时也要注意 解码decode成unicode 编码encode成你需要的字符集
同时、在decode和是需要告诉unicode你是什么字符来解码成unicode如下面代码
 
1 print(sys.getdefaultencoding())  # 获取当前系统字符集
2 msg = "我爱北京天安门"
3 msg_gb2312 = msg.encode("gb2312")
4 print(msg_gb2312)
5 print(msg_gb2312.decode(gb2312))
6 
7 gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk")
8 print(gb2312_to_gbk)

 

 
 
 
 
 
 
 

 

以上是关于Python集合&文件操作Day03的主要内容,如果未能解决你的问题,请参考以下文章

Day03

Day2-Python基础2---集合和文件操作

Python——day3_基础1_集合,文件操作,字符编码与转码

Day388.Selector&Pipe&fileLock文件锁&Path&Files&AsynchronousFileChannel异步通道 -NIO(代码片

python16_day03集合函数递归内置函数

Day03---集合,函数,三目运算,lambda表达式,内置函数,文件操作