Python文件操作

一、集合
集合是无序的,本身自带去重属性
理解:集合解决了判断一个元素是否在列表中的问题,不用通过循环的方式一一去比对,减少了内存的消耗。

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









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值