python零基础学习-基础知识5-集合与文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python零基础学习-基础知识5-集合与文件相关的知识,希望对你有一定的参考价值。
集合: 一种特殊的列表
- 集合中的数据不会重复
- 可以测试两组数据的关系: 交集, 并集, 差集
- 集合中的数据是无序的
1. 创建集合
#---------------------------方法1--------------------- list1=[1,2,3,4,5] list2=set(list1) print(list2) #执行结果: {1, 2, 3, 4, 5}, 大括号是集合的标识 print(type(list2)) #执行结果: <class ‘set‘> #--------------------------方法2----------------------- list3=set([2, 4, 6, 8, 10])
2. 集合关系测试
1) 求交集
print(list2.intersection(list3)) print(list2&list3) #执行结果: {2, 4}
2) 求并集并去重
print(list2.union(list3)) print(list2|list3) #执行结果: {1, 2, 3, 4, 5, 6, 8, 10}
3) 求差集: 1有, 2没有的
print(list2.difference(list3)) print(list2-list3) #执行结果: {1, 3, 5}
4) 对称差集: 并集-交集
print(list2.symmetric_difference(list3)) print(list2^list3) #执行结果: {{1, 3, 5, 6, 8, 10}
5) 关系判断
print(list2.issubset(list3), list2.issuperset(list3)) #判断list2是否为list3的子集; 判断list2是否为list3的父集 #执行结果: False False print(list2.isdisjoint(list3)) #两集合没有交集则返回True, 否则返回False
3. 集合的变更
list2.add(100) #集合中添加一项 list2.update([101, 102, 103, 104]) #集合中同时添加多项 list2.remove(104) #集合中删除一项 list2.pop() #随意删除一项 list2.discard(103) #存在则删除, 不存在则忽略
Tip:
下面判断元素是否存在的方法, 适用于字典, 列表, 集合, 字符串
print(101 in list2) #返回True或False
文件
1. 打开文件 并 读取文件内容
#方法1 data=open("file1",encoding="utf-8").read() #如果不标注编码格式, 将会使用操作系统默认编码打开. windows默认编码格式为GBK print(data) #打印文件全部内容 #方法2; 为避免不断调用open方法创建文件对象, 应尽量使用方法2 f=open("file1",encoding="utf-8") #创建文件句柄 data=f.read() print(data) #打印文件全部内容 data1=f.read() print(data1) #打印空. 原因: 在读取data时, 文件的光标已经移动到文件底端 f.close()
2. 文件的读写模式
1) w: 写模式, 不能读文件
f=open("file2","w",encoding="utf-8") #创建新文件file2; 如文件已存在, 会覆盖之前的 f.write("啦啦啦啦啦啦\n我是卖报的小行家\n") #将内容写到新创建的文件中 f.close()
2) a: 追加模式, 不能读文件
f=open("file2","a",encoding="utf-8") #打开已存在的file2文件 f.write("不到天明去卖报\n一边跑一边叫\n") #将内容追加到文件末尾 f.close()
3) r: 只读模式, 只能读文件, 不能写入; 如不指定读写模式, 则默认为r
#将文件内容读取为一个列表, 每行为一个元素;该方法占用大量内存, 尽量不要使用 f=open("file1","r",encoding="utf-8") print(f.readlines()) f.close() #循环读取 f=open("file1","r",encoding="utf-8") for i in range(5): print(f.readline()) f.close() #效率最高的方法, 推荐使用 f=open("file1","r",encoding="utf-8") for line in f: print(line) f.close()
4) r+: 可以读文件, 可以以追加的方式进行写入
f=open("file2","r+",encoding="utf-8") print(f.readline()) #可以读文件 f.write("今天的新闻真正好\n") #从文件最后面开始写文件, 以追加的形式写入, 移动光标也没有用 f.close()
5) w+: 先创建一个新文件, 再写入
f=open("file1","w+",encoding="utf-8") f.write("啦啦啦\n我是卖报的小行家\n不到天明去卖报") f.seek(6) f.write("123") #会从光标所在的地方开始写入, 但会以insert的模式写入, 会覆盖后面的字符 f.close()
6) rb:
- 以二进制格式读文件
- 不能指定编码参数, 通常用于网络传输, 视频文件, 文件跨平台打开等功能
7) wb: 必须转化为二进制编码进行写入
3. 文件句柄位置
f=open("file1","r",encoding="utf-8") print(f.tell()) #打印文件句柄位置, 初始位置为0 f.readline() print(f.tell()) #句柄到达第二行, 此示例中返回值为17--->第一行字符的字符数 print(f.read(2)) #从句柄处开始, 读两个字符 f.seek(0) #句柄返回文件开头 f.close()
4. 修改: 只有两种方式
- 全部加载至内存, 修改完成后写进去
- 读进来, 改一下, 存到新的文件里
f=open("file2","r",encoding="utf-8") f_new=open("file3","w",encoding="utf-8") for line in f: if "报" in line: line=line.replace("报","报纸") f_new.write(line) f.close() f_new.close()
5. 其他
print(f.encoding) #打印文件编码 print(f.name) #打印文件名 f.truncate() #清空文件, 从头开始清空, 移动光标并没有用 # f.flush(): 强制将内存中的内容刷新到硬盘上, 常用于金额等敏感数据的写入 # 不强制刷新时, 系统会等内存存储一定数量数据时, 才往硬盘中写入 #模拟process bar import sys, time for i in range(20): sys.stdout.write(">") sys.stdout.flush() time.sleep(0.5)
6. with语句: 执行完毕后会自动关闭文件
with open("file2","r",encoding="utf-8") as f: print(f.readline()) with open("file2","r",encoding="utf-8") as f1,open("file3","r",encoding="utf-8") as f2: print(f1.readline()) print(f2.readline())
以上是关于python零基础学习-基础知识5-集合与文件的主要内容,如果未能解决你的问题,请参考以下文章