#==================================== set  集合  特点为 无序的 且不重复的     =================================

#面试题            =         = ==  = = = =  = = = =  = = = =  重点
# lis = [1,2,1,2,3,4,4,4,3,6,6,7,7,7,2,2,3,3,]
# #去重:
     #1,用算法去做,
    #2.转换成集合,再转换过来。
# set1 = set(lis)
# lis = list(set1)
# print(lis)

# 创建集合:   创建set 为不可变数据类型
# set1 = set({1,2,"alxe"})
# set1 = { "alex","wusir","ritian",11,22,33}
# print(set1)

#=============== 增
# add 添加一个元素
# set1.add("景女神")
# print(set1)

#update 迭代的添加
# set1.update("abc",[1,2,3])
# # set1.update([1,2,3])
# print(set1)

# 删除
# set1 = { "alex","wusir","ritian",11,22,33}
#按照元素去删除
# set1.remove("ritian")
# print(set1)
#随机删除pop
# set1.pop()
# print(set1)

#del  删除
# del set1
# print(set1)


# 清空 cleak()
# set1.clear()
# print(set1)


#集合查===================    只能 循环 去查 ===========
# for i in set1:
#     print(i)


#  交集 intersection   &   取交集内容
# set1 = {1,2,3,4,5}
# set2 = {4,5,6,7,8}
# # set3 = set1 & set2
# # print(set3)
# print(set1.intersection(set2))

#并集  \  union    两个set 合成一个  重复的合成一个

# print(set1 | set2)
# print(set1.union(set2))

#反交集 ^ symmetric_difference  两个set 合并一个 取 没有重复的
# print(set1 ^ set2)
# print(set1.symmetric_difference(set2))

# 差集 - difference  以set1   不相同的 保留
# print(set1 - set2 )   # 在set1 与 set2 相同的去除.
# print(set2 - set1 )   # 在set2 与 set1 相同的去除
# print(set1.difference(set2))  # 相同的去除 ,
# print(set2.difference(set1))

#超集   <  issubset
# set1 = {1,2,3,4,5}
# set2 = {1,2,3,4,5,6,7,8}
# print(set1 <= set2)
# print(set1.issubset(set2))  #返回 True 说明 set1 是 set2 子集
# print(set2 > set1)
# print(set2.issuperset(set1))   #返回 True 说明 set2 包含 set1

# forzenset set 变为i不可变数据类型
# s2 = frozenset(set1)
# print(s2,type(s2))


#文件的 打开方式 与功能

#绝对路径 是根目录下的
#相对路径  是同一个文件夹下的 文件就是相对路径

#f = open("E:\lx.txt",encoding = "gbk",mode = "r")
# open  他是windows系统命令,  注意路径 和 文件的 编码方式
# mmode = "r"  可以不写 , 不写 默认为只读
#  r : 只读   r+  可读可写,先读后写  rb 以字节的模式读文件
#f 变量:f f_obj, obj, file_hl, file_hanlder  文件句柄
# 通过对文件句柄的操作,来得到你想要的东西.
# content = f.read()
# print(content)
# f.close()   #将你的文件句柄,或者是动作关闭,节省内存

#rb  b表示为bytes  字节  一般用于非文字类型的文件;图片,视频
# 文件的下载和上传的功能用 b M模式
# rb 为二进制模式 不需要编码参数
# f = open("lianxi","rb")
# content = f.read()
# print(content)
# f.close()

# r 读有五种模式
# 1.  f.read()全部读出来   因为打开文件是从内存中进行的  如果文件太大
#的话  电脑会蓝屏

#2 f.readline()  按行读    麻烦,没效率
# f = open("lianxi",encoding="utf-8")
# line = f.readline()
# print(line)
# line = f.readline()
# print(line)
# f.close()

#  3 .f.readlines() 每一行作为一个元素, 放在列表中
# f = open("lianxi",encoding="utf-8")
# line = f.readlines()
# print(line)
# f.close()

#  4 . for  in 循环去读文件 最好的方式。
# f = open("lianxi",encoding="utf-8")
# for i in f:
#     print(i)
# f.close()

# 5 . f.read(n)  n 表示自己的个数
# f = open("lianxi",encoding="utf-8")
# content = f.read(12)  # r 模式 n 是按照字节获取
# print(content)
#f.close()

# f = open("lianxi",mode = "rb")
# content = f.read(3)  # rb 模式  是按照字节读取
# print(content)
# f.close()

# bytes 转化为 str
# s = b"\xe4\xb8\xb0".decode("utf-8")
# print(s)

# 只写w  wb  w+可读可写,先读后写   如果没有文件,则创建文件写内容,
#   如果有文件则将原文件 内容 全部删除,再写。
# f = open("lianxi2","w",encoding="utf-8")
# f.write("alex")
# f.close()
# f = open("lianxi2","w",encoding="utf-8")
# f.write("alex333")
# f.close()

#追加 a  ab 在最后追加       a+可读可写,先读后写
# f = open("lianxi2","a",encoding="utf_8")
# f.write("wusir是xxx")
# f.close()

#     seek  移动广标  按照字节跳整位置
# f = open("lianxi","w+",encoding="utf-8")
# f.write("333333")
# f.seek(0)   # 移动广标  按照字节调整
# print(f.read())
# f.close()

# truncate  截断
# f = open("lianxi","a",encoding="utf-8")
# f.truncate(3)  # 截断按照字节去截  截取前面的内容
# f.close()

# python  内部 的 打开文件的 简单方法:
# with open("lianxi","r",encoding="utf-8")as f1,\
#     open("lianxi2","r",encoding="utf-8")as f2:
#     print(f1.read())
#     print(f2.read())

#python 内部 改动文件   清除版
# import os
# #1,创建一个新文件。
# with open("lainxi",encoding="utf-8")as f1,\
#     open("lianxi2","w",encoding="utf-8")as f2:
# #2.读取元文件
#     old_content = f1.read()
#     new_content = old_content.replace("alex","sb")
#     f2.write(new_content)
# #3.将原文件的内容通过你想要额方式进行更改,并写入新文件。
# #4.将原文件删除。
# os.remove("lainxi")
# #5,将新文件重命名原文件名。
# os.rename("lianxi2","lainxi")


 #简便版
# import os
# #1,创建一个新文件。
# with open("lainxi",encoding="utf-8")as f1,\
#     open("lianxi2","w",encoding="utf-8")as f2:
# #2.读取元文件
#     for i in f1:
#         i = i.replace("alex","sb")
#         f2.write(i)
# #3.将原文件的内容通过你想要额方式进行更改,并写入新文件。
# #4.将原文件删除。
# os.remove("lainxi")     # 路径
# #5,将新文件重命名原文件名。
# os.rename("lianxi2","lainxi")