您的位置:首页 > 编程语言 > Python开发

Python文件操作

2017-07-16 22:48 363 查看
一、集合

集合是无序的,本身自带去重属性

理解:集合解决了判断一个元素是否在列表中的问题,不用通过循环的方式一一去比对,减少了内存的消耗。
1.集合的书写形式

(1)第一种形式

list=[1,4,5,3,5,6,7,9]
#去重
list1 = set(list)

#交集(intersection)
list2 = set([2,4,6,88,66,77])
print(list1.intersection(list2))

#并集(union)
print(list1.union(list2))

#差集(difference)
print(list1.difference(list2))

list3 = set([4,6])
#子集(issubset)print(list3.issubset(list1))

#父集(issuperset)
print(list1.issuperset(list3))

#对称差集(取两个列表均没有的symmetric_difference)
print(list1.symmetric_difference(list2))
list4 = set([200,100])
#list1和list2在没有相同项的时候返回True,否则返回False
print(list1.isdisjoint(list2))
(2)第二种形式

#交集
a = list1 & list2
#并集
a = list2 | list2
#差集
a = list1 - list2
#对称差集
a = list1 ^ list2


2.集合运算

#增
list1.add(99)
list1.update([15,20,18])
#删
list1.remove(15)
list1.discard(99)
注意:在进行删除操作时,remove不存在时会报错,而discard不会

列表,字典,集合判断一个字符是否存在均使用x in s

二、文件操作

1.文件的打开与读取

f = open("yesterday",encoding="utf-8")
读取文件

读取所有文件内容
f.read()
读取一行文件
f.readline()
读取所有文件内容,并将文件内容变成列表的形式,不推荐使用,消耗内存。

f.readlines()
推荐使用以下方式进行文件读取

for line in f:
if count == 9:
print('--------我是分割线---------')
count +=1
continue
print(line)
count +=1
2.文件模式

写入模式(不可读,不存在则创建、存在则删除内容)

f = open("yesterday","W",encoding="utf-8")
追加模式
f = open("yesterday",a",encoding="utf-8")
3.二进制的处理

f = open("test","rb")
f = open("test","wb)
f = open("test","ab")
4.文件的定位与修改

返回文件的当前位置读/写指针在文件位置

f.tell()
用于移动文件读取指针到指定位置
f.seek()
文件修改

f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday2","w",encoding="utf-8")

for line in f:
if "" in line:
line = line.replace("self","new")
f_new.write(line)
5.其他方法

#声明文件编码
f.encoding
#获取文件名称
f.name
#截取字符
f.truncate(10)
#关闭文件
f.close()
三、with语句

虽然Python有回收机制,但是在对文件进行操作时常常忘记关闭,可采用以下方式打开文件

with open('log','r') as f:
...
四、字符编码与转码

1.在python2默认编码是ASCII, python3里默认是unicode

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间 

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  老男孩 Python 自动化