学习
实践
活动
专区
工具
TVP
写文章

Python基础知识4:文件操作

文件的知识:打开文件、操作文件、关闭文件

1、关于打开文件:

f.open('text','r')#r代表只读

f.open('text','w')#w代表只写,先清空源文件的内容

f.open('text','x')#文件存在即报错,文件不存在则创建文件,并可写入内容(即同w)

f.open('text','a')#a代表在源文件末尾追加内容

案例1:读文件内容的程序

f=open('db','r')

data=f.read()

print(data)

f.close()

案例2:encoding限制文件内容形式

#读文件内容出来,如果打开文件时出现乱码,需要看下encoding对应的类型是否真错

#比如text文件中有汉字,则必须写上encoding='utf-8'

f=open('text','r',encoding='utf-8')

data=f.read()

print(data)

f.close()

案例3:加b后,直接以字节方式读取文件,不加b则以字符串形式读取

f=open('db','rb')#当r为rb时,会以字节方式读取文件

data=f.read()

print(data,type(data))

f.close()

案例4:当传递内容为字符时,需要通过bytes转化

f=open('db','ab')#会以字节方式追加

f.write(bytes("hello",encoding='utf-8'))#当传递内容为字符时,需要用bytes转化

f.close()

案例5:r+即可读又可写,同时不会覆盖文件,会在末尾追加内容

f=open('db','r+',encoding='utf-8')#即可读又可写

data=f.read()

print(data)

f.write("hello")#在末尾覆盖

f.close()

执行结果:

另外还有a+(实现读和写,但写的时候会永远在最后追加),w+(实现写和读,但会清空源文件内容后在写),因此用的最多的是r+

2、关于文件的操作

seek()#将按字节形式读取指针位置,中文代表3个字节

tell()#获取当前指针的位置,按字节形式

案例6:调整指针位置

f=open('db','r+',encoding='utf-8')#即可读又可写

data=f.read(1)#如果打开模型无b,则read按字符读取,如果有b,则按字节方式,比如中文会占3个字节

print(f.tell())#tell()当前指针所在的位置,无论是否有b,均按字节形式

f.seek(f.tell())#可调整当前指针的位置

f.write("888")

f.close()

案例7:flush#强刷,当没有结束程序时,需要把写的内容强制刷进内存

f=open('db','a')

f.write("123")

f.flush()#强制把123内容写入硬盘中

input("hhh")

案例8:truncate,用来截断数据

f=open('db','r+',encoding='utf-8')#即可读又可写

f.seek(3)#调整到3字节

f.truncate()#3字节后的所有内容全部清空

f.close()

其他:readline,仅读取一行

3、关闭文件

可以用f.close(),还可以用with执行完自动关闭

withopen('db')asf:

input("hhh")

案例9:读取第一个文件的前世行,并写入到第二个文件

withopen('db','r')asf1,open('db2','w')asf2:

times=

forlineinf1:#一行一行的读取

times+=1

iftimes

f2.write(line)

else:

break

案例10:修改一个文件,替换部分内容

withopen('db','r')asf1,open('db2','w')asf2:

forlineinf1:

new_str=line.replace("aaa","cc")

f2.write(new_str)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171217G0DOQN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券