No.004-Python-学习之路-Day2-set|文件操作

集合-set

集合内的数据对象都是唯一的-作用:去重集合是无序的存储结构,集合中的数据没有先后关系
集合内的元素必须是不可变对象
集合是可迭代的对象-即:可用for进行遍历
集合的作用主要有两个:去重,关系测试(交集,并集,差集,反向差集,子集)

 1 # 创建set
 2 set1 = set() # 使用set方法创建
 3 print(set1, type(set1))
 4 
 5 set2 = {"Bruce", "Amadeus"} # 使用{}及值创建,注-空{}创建的是字典
 6 print(set2, type(set2))
 7 
 8 
 9 # set去重
10 list1 = [1, 2, 3, 4, 1, 2, 3, 4, 5, 6]
11 list1 = set(list1)
12 print(list1, type(list1))
13 
14 
15 # set关系测试
16 list1 = [1, 2, 3, 4, 1, 2, 3, 4, 5, 6]
17 list2 = [1, 2, 5, 7, 8, 9]
18 list1 = set(list1)
19 list2 = set(list2)
20 print(list1, list2) #  执行结果中便于对比
21 
22 print(list1.intersection(list2)) # 两个集合的交集-方法intersection()
23 print(list1 & list2) # 两个集合的交集-运算符 "&"
24 
25 print(list1.union(list2)) # 两个集合的并集-方法union()
26 print(list1 | list2) #两个集合的并集-运算符 "|"
27 
28 print(list1.difference(list2)) # 两个集合的差集-方法difference()
29 print(list1 - list2) # 两个集合的差集-运算符"-"
30 
31 print(list1.symmetric_difference(list2)) # 两个集合的对称差集-方法sy-diff()
32 print(list1 ^ list2) # 两个集合的对称差集-运算符 "^"
33 
34 list3 = {1, 2, 5, 7}
35 print(list2.issuperset(list3)) # list2是不是list3的父集-方法issuperset()
36 print(list3.issubset(list2)) # list3是不是list2的子集-方法issubset()
37 
38 list4 = {3, 4, 6}
39 print(list3.isdisjoint(list4)) # 判定两个集合是否存在交集-方法isdisjoint()
40 
41 
42 # 修改set
43 
44 list1.add(999) # 添加单个集合元素
45 list1.update([666, 777, 888]) # 添加多个集合元素
46 
47 list1.remove(777) # 删除特定元素,如果没有会报错
48 list1.discard(888) # 删除特定元素,如果没有不会报错
49 list1.pop() # 随机删除元素
50 
51 set1.symmetric_difference_update() # 将对称差集的内容更新至set1
52 # 查询
53 
54 len(list1) # 查询集合中元素个数
55 
56 777 in list1 # 查询某元素是否在集合中
57 
58 
59 # 复制同列表

文件操作

 在Python中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象---->使用内置函数open()。

格式: open(file_dir, mode=‘r’, encoding='locale.getdefaultlocale()' ) mode具体信息如下:

 

 

 

1 # 获取相关的编码信息
2 # python编译器的编码格式与(读取.py文件)及调用encode()默认参数有关
3 # 操作系统默认支持的编码格式跟open函数参数encoding的默认值相关
4 import sys, locale
5 
6 print(sys.getdefaultencoding()) # 获取python编译器内的默认编码格式
7 print(locale.getdefaultlocale())  # 获取操作系统默认支持的编码格式
 1 # open打开文件的方式
 2 
 3 data = open("goods_list.txt",encoding="UTF-8").read() #不规范的打开方式
 4 print(data) # open所创建的对象未赋值给变量,在执行完read()函数后,即消失
 5 
 6 f = open("goods_list.txt", encoding="UTF-8") # 打开文件并操作方式一
 7 data = f.read()
 8 print(data)
 9 f.close()
10 
11 with open("goods_list.txt", "r", encoding="UTF-8") as f: # 打开文件方式二
12     data = f.read()
13     print(data) # 此方法可以自动关闭,代码块执行完毕后自动释放
 1 # 文件读取的方法
 2 
 3 f = open("day3_file.txt", "r", encoding="UTF-8") # 建议一个文件对象
 4 
 5 for line in f: # 文件对象是个可迭代的对象
 6      print(line.rstrip())
 7 
 8 f.read() # 读取整个文件,返回字符串
 9 f.readline() # 读一行并且指针下移一行
10 f.readlines() # 读整个文件,返回列表,元素为每行内容
1 # 文件写入的方式
2 f = open("day3_file.txt", "w", encoding="UTF-8")
3 
4 f.write("我爱北京天安门\n") # 传入字符串,否则报错
5 
6 list1 = ["我爱北京天安门\n", "天安门上太阳升\n"]
7 f.writelines(list1) # 传入列表类,否则报错
 1 # 其他的一些方法
 2 f = open("goods_list.txt", "r", encoding="UTF-8")
 3 f.fileno() # 返回内存所用IO程序的编号
 4 f.name() # 返回文件的名字
 5 f.isatty() # 判断是否为终端交互设备
 6 f.seekable() # 是否可以移动指针
 7 f.readable() # 文件是否可读
 8 f.writable() # 文件是否可读
 9 f.closed() # 判断文件是否关闭
10 f.newlines # 未知2.7的,不要使用
 1 # flush()与truncate()的使用
 2 
 3 # flush() --->刷新
 4 # 在write、writeline或writelines时,写的部分内容会存在内存缓存中,直到分配的内存缓存满了,才会向硬盘的文件中写
 5 # flush方法会强制将缓存中的内容写入硬盘并清空缓存
 6 # 在pycharm中看不到现象,直接运行解释器
 7 
 8 with open("goods_list.txt", "w", encoding="UTF-8") as f:
 9     f.write("Hello1")
10     f.flush()
11     f.write("Hello2")
12 
13 
14 # truncate()截断,自多少字节至尾清除,无参数则意味从头到尾清空
 1 # 文件的修改
 2 # 因为文件是直接存在硬盘中的
 3 # 修改方式一:全部文件读入内存,改完后覆盖原文件并写回
 4 # 修改方式二:新建一个文件,将源文件内容逐行读出->修改->写入新文件->修改文件名
 5 # 方式一仅适合于小文件,方式二则可较广范围使用
 6 
 7 # 方法二
 8 import os
 9 file_name = "file_edit_1.txt"
10 with open(file_name, 'r', encoding='UTF-8') as f1, open(
11         "middle_file.txt", "w+", encoding="UTF-8") as f2:
12     for line in f1:# 读取原文件内每行内容,并使用字符串的replace函数进行修改,并写入新文件
13         f2.write(line.replace(",", "-", 1))
14 f2.close()
15 os.rename(file_name, "old_{}".format(file_name))# 原文件修改为old文件
16 os.rename("middle_file.txt", file_name)# 中间
 1 # 在文件对象中存在指针,在读取文件时,指针会自动下移,可以使用seek参数调整
 2 # 通常配合r+ w+ a+ 三种模式使用
 3 # seek(偏移量,指定位置)
 4 # 偏移量--> 相对指定位置偏移的字节数,>0向右 <0 向左
 5 # 指定位置--> 0 代表文件开头, 1 代表当前位置 2 代表文件末尾
 6 
 7 f = open("day3_file.txt", "r", encoding="UTF-8")
 8 print(f.tell())
 9 print(f.readline())
10 print(f.tell())
11 f.seek(0, 0) # 等同于 f.seek(0),指定位置默认为0
12 print(f.tell())
13 print(f.readline())

 

 

 

 

 

 

 

aaa

posted @ 2019-12-12 11:27  FcBlogs  阅读(177)  评论(0编辑  收藏  举报