【Python文件操作】

一、文件的创建

二、文件的写入

三、文件的关闭

四、文件的with语句

五、文件的读取

六、文件对象的其他方法

七、CSV文件

八、pickle实现序列化与反序列化

一、文件的创建

1.使用open()函数进行创建文件,语法

open(文件名[,打开方式])

2.文件的打开方式:

模式说明
r以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式
w打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
a打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
rb以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头。这是默认模式
wb        以二进制格式打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
ab以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
r+打开一个文件用于读写,文件指针将会放在文件的开头
w+打开一个文件用于读写,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
a+打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式,如果该文件不存在,创建新文件用于读写
rb+以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新:文件用于读写

注意:没有增加模式“b"默认创建文本文件对象,处理基本单元是”字符”,对于二进制模式“b"创建二进制文件对象,处理的基本单元是“字节”

二、文件的写入

 利用write(a)方法将字符串列表写入文件

利用writelines(b)方法将字符串列表写入文件,不添加换行符

三、文件的关闭

1.利用close()方法进行关闭

f=open(r"b.txt","w")

f.write("Good afternoon!")

f.close()

 2.借用异常机制finally进行close()关闭,实现无论何种情况都能关闭打开的文件对象

try:

    f=(r"b.txt","w")

    f.write("school")

except BaseException as e:

    print(e)

finally:

    f.close()

四、文件的with语句(上下文管理器)

无论什么原因跳出with块,都可以确保文件正确关闭

with open(r"a.txt","w") as f:

    f.write("I am fine")

五、文件的读取

1.read([size]):从文件中读取size个字符,并作为结果返回,无size参数,则全部读取,会返回空字符串

2.readline():读取一行内容作为结果返回,读取到文件末尾,会返回空字符串

3.readlines():文本文件中,每一行作为一个字符串存入列表中,返回该列表

with open(r"b.txt","r") as f:

    print(f.read())

4.使用迭代器读取

with open(r"b.txt","r") as f:

    for a in f:

        print(a,end="")

六、文件对象的其他方法

方法说明
tell()返回文件指针的当前位置
seek(offset[,whence])

将文件指针移动到新位置,offset表示相对于whence的位置

offset为正时往结束方向移动,为负往开始移动

whence:

0:从文件头开始计算

1:从当前位置计算

2:从文件为计算

truncate([size])

无论指针在哪,只留下指针前size个字节内容,其余全部删除

若未传入size,则从指针当前位置到末尾全部删除

flush()缓冲区内容写入文件但不关闭文件

七、CSV文件操作

1.CSV文件:逗号分隔符文本格式

值无类型,所有值都是字符串

不能指定字体颜色等样式

不能指定单元格宽高,不能合并单元格

没有多个工作表

不能嵌入图像图表

2.CSV文件读取和写入

import csv
with open("a.csv","r")as f:
    a_csv=csv.reader(f)
    print(list(a_csv))
with open("b.csv","w")as f:
    b_csv=csv.writer(f)
    b_csv.writerow(["ID","姓名","年龄"])
    b_csv.writerow(["1001","小明","18"])
    b_csv.writerow(["1002","小红","19"])
    b_csv.writerow(["1003","小兰","20"]) 

八、使用pickle实现序列化与反序列化 

1.序列化指将对象转化成”串化行“数据形式,存储到硬盘或通过网络传输到其他地方

反序列化指相反过程,将读取到的”串化行“数据转化成对象

方法说明
pickle.dump(obj,file)obj指要被序列对象,file指存储文件
pickle.load(file)从file读取数据,反序列化成对象

序列化: 

import pickle
with open(r"d:\data.dat","wb") as f:
    a1="小明"
    a2=123
    a3=[10,20,30]
    pickle.dump(a1,f)
    pickle.dump(a2,f)
    pickle.dump(a3,f)

反序列化:

import pickle
with open(r"d:\data.dat","rb")as f:
    a1=pickle.load(f)
    a2=pickle.load(f)
    a3 = pickle.load(f)
    print(a1)
    print(a2)
    print(a3)

小明
123
[10, 20, 30]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

In my opinion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值