1

Day 8 集合与文件的操作

一、创建集合两种方式.
二、添加元素的方式(add、update"属于迭代添加")

 

 

 

 

 

 


一、集合

# 1. 集合是无序的,不能重复的。
# 2.集合内元素必须是可哈希的。
# 3.集合不能更改里面元素
# 4.集合可以求交集,并集,差集,反交集的.

#去重
lis = [1,1,2,2,2,3,4,5,5,5,6]
set1=set(lis)
lis=list(set1)
print(set1)
print(lis)
#结果 :{1, 2, 'alex'}

set1=set({1,2,"alex"})
print(set1)

set1.add("女神")
print(set1)
# 结果:{1, 2, '女神', 'alex'}
set1.update("abc")
print(set1)
# 结果:{1, 2, '女神', 'alex', 'a', 'b', 'c'}

#删除
set1.remove("alex")#按元素删除
print(set1)
#结果 {1, 2, 'b', '女神', 'a', 'c'}
'''

set1.clear()#清空集合
print(set1)
#set()

#查
for i in set1 :
print(i)

#交集 intersection ,两个集合一样的元素为结果
set1={1,2,3,4,5,6}
set2={4,5,6,7,8}
print(set1 & set2)
#或者 intersection
print(set1.intersection(set2))

set1={1,2,3,4,5,6}
set2={4,5,6,7,8}
#并集union ;为两个集合加在一起作为结果
print(set1 | set2)
#或者 union参数
print(set1.union(set2))

#反交集(^) 两个集合对方都没用的元素做为结果
set1={1,2,3,4,5,6}
set2={4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

#差集 difference :为set1 自己独有的
print(set1 - set2 )

#子集
set1={1,2,3,4}
set2={1,2,3,4,5,6,7,8}
print(set1 < set2) # set1 是set2 的子集
print(set1.issubset(set2))
#结果为True

#超集
print(set2 >set1 )
print(set2.issuperset(set1))
#结果为True

#frozenset 不可变集合,让集合变成不可变类型.

s2=frozenset(set1)
print(s2,type(s2))

二、文件的操作
#文件的操作
#1. 文件的路径
# 2. 编码方式
# 3.打开方式:只读,只写,读写
'''

f=open("C:\Hotfix\python_file.txt",encoding="utf-8",mode="r")
content =f.read()
print(content)
f.close()

'''

#可能会产生的错误 1 unicode :文件存储的编码与打开的编码不一致
#路径前加r 或者双//
'''
# 读
#c:\\users\\administrator\\desktop\\new.py -->绝对路径
#同一个文件夹下的文件就是相对路径--->相对路径
f = open("D:\\parcharm\\12\\Day 8\\new.txt","r",encoding="UTF-8")
content=f.read()
print(content)
f.close()
# 打印结果 :孟宾 你好,fafdadfa;dsf

#rb一般用于非文件类的文件,图片,视频,文件的下载和上传的功能用b 模式。

'''

#r的五种模式
# 1. f.read()全部读出来
# 2. f.readline()按行读
# 3. f.readlines()每一行作为一个元素防止列表中.
# 4. 推荐方式 循环
'''
f=open("new.txt",encoding="utf-8")
for i in f:
print(i)
f.close()
'''

#5.f.read(n)-->读取前几个字符
'''
f= open("new.txt",mode="r",encoding="utf-8")
content =f.read(8) -前八个字符
print(content)
f.close()
'''

#new文件内容:孟宾 你好,fafdadfa;dsf
#输出结果 :孟宾 你好,fa

## bytes --> str 用decoding 语句
##只读r ,rb
# read , readline readlines read(n), for 循环.


#①写w
f= open("new.txt","w",encoding="utf-8")
f.write("alex是someday")
print(f)
f.close()
#输出了如下一段语句<_io.TextIOWrapper name='new.txt' mode='w' encoding='utf-8'>
#如果没有文件,则创建文件,如果有文件则将原文件内容全部删除再写.

#②追加,只追加a
f= open("new.txt","a",encoding="utf-8")
f.write("wusir 紧跟其后")
f.close()

#读写 (先读后写)r+
'''
f = open("new.txt","r+",encoding="utf-8")
f.read()
f.write("sdsf")
f.close()
'''

#一定要注意先读后写。


#写读w+

'''
f = open("new.txt","w+",encoding="utf-8")
f.write("aaa")
f.seek(0)#把光标移动到开头,按照字节调整.
print(f.read())
f.close()

'''

#常用方法 read(),readline(),seek(),f.truncate(3)截取按字节
# read readable ,readline readlines ,for 循环,seek ,tell, write ,writeable ,truncate.


# with 语句
with open("new.txt","r",encoding="utf-8")as f1:
f1.read()
print(f1)

#一个句子操作多个句柄 。
with open("new.txt","r",encoding="utf-8")as f1, open("new1.txt","r",encoding="utf-8"):

#改动文件
# ① 创建一个新的文件
# ② 读取一个原文件
# ③ 将原文件的内容通过你想要的方式进行更改并写入新文件
# ④ 将原文件删除
# ⑤ 将新文件重命名
'''

改动文件方法一 、
import os
with open("D:\\parcharm\\12\\Day 8\\new.txt","r",encoding="utf-8")as f1, open("D:\\parcharm\\12\\Day 8\\new2.txt","w",encoding="utf-8")as f2:
#③ 将原文件的内容通过你想要的方式进行更改并写入新文件
old = f1.read()
new =old.replace("alex","SB")
f2.write(new)
# ④ 将原文件删除
os.remove("new.txt")
# ⑤ 将新文件重命名
os.rename("new2.txt","new.txt")
'''

#改进用 for 循环
import os
with open("D:\\parcharm\\12\\Day 8\\new.txt","r",encoding="utf-8")as f1, open("D:\\parcharm\\12\\Day 8\\new2.txt","w",encoding="utf-8")as f2:
#③ 将原文件的内容通过你想要的方式进行更改并写入新文件
for i in f1:
i = i.replace("alex", "SB")
f2.write(i)
# ④ 将原文件删除
os.remove("new.txt")
# ⑤ 将新文件重命名
os.rename("new2.txt","new.txt")
posted @ 2018-01-30 17:04  萌哥-爱学习  阅读(342)  评论(0编辑  收藏  举报