Python3学习笔记(3)集合、文件操作、字符转编码
1.集合
集合是无序的、不重复的数据组合,主要作用是:关系测试、去重等,用{}表示,set() 创建集合。
--------------关系测试------------------------------
intersection() 求集合交集 运算符为 &
union() 求集合并集 运算符为 |
difference() 求集合差集 运算符为 -
issubset() 判断是否为子集
issuperset() 判断是否为父集
symmetric_difference() 求对称差集,即并集-交集 运算符为 ^
isdisjoint() 若两集合无交集返回True
如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!
--------------基本操作------------------------------
add() 向集合增加1个元素
update() 向集合增加多个元素,括号内为列表
remove() 删除集合1个元素,该元素必须存在,否则报错
len() 集合长度
in 判断元素是否在集合内
not in 判断元素不否在集合内
copy() 浅复制
pop() 删除任意某个元素并返回该元素
discard() 删除集合1个元素,该元素可以不存在,不存在则不做任何操作,存在则删除
2.文件操作
f = open(文件名,打开文件模式) 打开文件返回文件句柄,有时根据情况需指定encoding,也有with open() as f: 这种方式自动调用close()方法
f.read() 一次读取文件全部内容,若连续两次f.read()则第2次读不到任何东西,因为第一次read后光标已经至末尾 模式可选为“r”
f.write() 向文件写入内容(创建新文件,若有同名文件则覆盖) 模式可选为“w”
f.write() 向文件中末尾追加内容 模式选为“a”
f.readline() 读取文件一行
f.readlines() 一次性按行读取文件,返回列表(每行为一个元素),适合处理小文件
for line in f: 大文件可逐行读取,内存中只保留一行数据,效率最高(文件变成迭代器)
f.tell() 文件句柄指针位置(可理解为光标位置,按字符计数)
f.seek() 设置句柄指针位置,如f.seek(0) 则光标移至文件开头
f.encoding 该文件的编码
f.name 该文件的名字
f.isatty() 判断是否为终端设备,如打印机
f.flush() 强制刷新,io往文件写的时候是等到待写入文件达到buffer_size才一起写入,f.flush()可以强制刷新,直接即时写入
f.truncate() 截取x个字符
f.close() 关闭文件句柄
----------------------------------------打开文件模式------------------------------------------
r 只读,若文件不存会报错
w 只写,若文件不存在则自动创建再写入,会覆盖文件
a 追加,若文件不存在则自动创建再写入,不会覆盖文件,但在末尾追加
r+ 读写,若文件不存会报错,写会覆盖文件(比如读三行后后再写,写的时候不是从光标当前位置写了,而是在末尾追加写)
w+ 写读,若文件不存在则自动创建再写入,写会覆盖文件
a+ 追加,若文件不存在则自动创建再写入,写不会覆盖文件,但在末尾追加
wb,rb类似于w、r,但用于二进制文件(如视频)或Python3中网络传输
---------------------------------------------------------------------------------------------------------
3.文件修改
上述文件操作中修改文件会将原文件覆盖
方法一:类似于vim先将文件加载到内存里再修改,效率低
方法二:读文件修改后写入一个新的文件,相比较效率更高
注意字符串操作有返回值,原字符串值不被修改
如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!
4.进度条(缓冲flush)
5.字符转编码