python文件操作

1、打开文件获取文件
2、通过文件句柄操作文件
3、关闭文件
先来看看读取文件内容:
原文件是.txt的文档,读取里面的内容:

f = open('file.txt','r+',encoding='utf-8') #以只读方式打开文件内容
frist_line = f.readline()#获取文件的第一行内容,返回的是一个list
print(frist_line)#打印第一行

这里写图片描述
读取剩下的内容:

res = f.read()#获取除了第一行剩下的所有文件内容
print(res)
f.close()#关闭文件

结果显示为
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,后面通过此文件句柄对该文件操作,打开文件的模式有:

f.readable()     # 判断文件是否可读
f.writable()  # 判断文件是否可写
f.encoding  # 打印文件的编码
f.read()  # 读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.readlines()  # 读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.tell()  # 获取当前文件的指针指向
f.seek(0)  # 把当前文件指针指向哪
f.write('爱情证书')  # 写入内容
f.flush()  # 写入文件后,立即从内存中把数据写到磁盘中
f.truncate()  # 清空文件内容
f.writelines(['爱情', '孙燕姿'])  # 将一个列表写入文件中
f.close()#关闭文件

这里写图片描述

f.writelines(['爱情', '孙燕姿'])  # 将一个列表写入文件中
f.close()#关闭文件

写入文件这里写图片描述
文件较大时用read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了

f = open('file.txt','r+',encoding='utf-8')
for line in f:
    print(line)
        #这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

这里写图片描述
with使用:对文件操作过程中经常忘了关闭文件,with的使用是自动关闭该文件,使用方式如下:

with open('file.txt', 'r',encoding='utf-8') as f:  # 打开一个文件,把这个文件的句柄付给f
    for line in f:
        print(line)

这里写图片描述
修改文件:一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容,单文件的内容可以增加;第二种是把修改后的文件内容写到一个新的文件中
eg1:

with open('file.txt', 'r+',encoding='utf-8') as fr:
    res = fr.read()
    new_res = res.replace('我', 'me')
    fr.write(new_res)

这里写图片描述
eg2:

with open('file.txt',encoding='utf-8')as fr,open('file_bak', 'w',encoding='utf-8') as fw:  # 这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
    for line in fr:  # 循环file.txt中的每一行
        new_line = line.replace('我', 'me')
        fw.write(new_line)  # 写到file_bak文件中

这里写图片描述
集合:
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据。集合的作用:
1、它自动去一个列表中重复的数据,而不需要你再写判断
2、可以做关系测试,比如说有两波人,一波喜欢苹果,一波喜欢葡萄,既想吃葡萄又想吃苹果的人,就可以用集合
定义集合

list = [2,3,1,2,3,4]
l=set()    #定义空集合
s_list = set(list)#这样就定义了一个集合
set1 = set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合
set2={'hehe','hehe1','hehe3'}#这种方式是直接定义一个集合
print(s_list)
print(set1)
print(set2)

这里写图片描述

list1 = {1, 2, 3, 4, 5, 6, 9}
list2 = {2, 3, 4, 6, 1}
list3 = {1, 2, 3}
print(list1.intersection(list2))  # 取交集,也就是取list1和list2中都有的
print(list1 & list2)# 取交集
print(list1.union(list2))  # 取并集,也就是把list1和list2合并了,然后去除重复的
print(list1 | list2)# 取并集
print(list1.difference(list2))  #取差集 在list中存在,在list2中没有的
print(list1 - list2)
print(list3.issubset(list1))#判断list3是不是list1的子集
print(list1.issuperset(list3))#判断list1是不是list3的父集
print(list1.isdisjoint(list3))#判断list1和list3是否有交集
print(list1.symmetric_difference(list2))#对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉
print(list1 ^ list2)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值