前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础知识4:文件操作

Python基础知识4:文件操作

作者头像
企鹅号小编
发布2018-02-26 10:23:31
4830
发布2018-02-26 10:23:31
举报
文章被收录于专栏:编程编程

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

1、关于打开文件:

代码语言:python
复制
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限制文件内容形式

代码语言:python
复制
#读文件内容出来,如果打开文件时出现乱码,需要看下encoding对应的类型是否真错
#比如text文件中有汉字,则必须写上encoding='utf-8'
f=open('text','r',encoding='utf-8')
data=f.read()
print(data)
f.close()

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

代码语言:python
复制
f=open('db','rb')#当r为rb时,会以字节方式读取文件
data=f.read()
print(data,type(data))
f.close()

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

代码语言:python
复制
f=open('db','ab')#会以字节方式追加
f.write(bytes("hello",encoding='utf-8'))#当传递内容为字符时,需要用bytes转化
f.close()

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

代码语言:python
复制
f=open('db','r+',encoding='utf-8')#即可读又可写
data=f.read()
print(data)
f.write("hello")#在末尾覆盖
f.close()

执行结果:

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

2、关于文件的操作

代码语言:python
复制
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#强刷,当没有结束程序时,需要把写的内容强制刷进内存

代码语言:python
复制
f=open('db','a')
f.write("123")
f.flush()#强制把123内容写入硬盘中
input("hhh")

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

代码语言:python
复制
f=open('db','r+',encoding='utf-8')#即可读又可写
f.seek(3)#调整到3字节
f.truncate()#3字节后的所有内容全部清空
f.close()

其他:readline,仅读取一行

3、关闭文件

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

代码语言:python
复制
withopen('db')asf:
input("hhh")

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

代码语言:python
复制
withopen('db','r')asf1,open('db2','w')asf2:
times=
forlineinf1:#一行一行的读取
times+=1
iftimes
f2.write(line)
else:
break

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

代码语言:python
复制
withopen('db','r')asf1,open('db2','w')asf2:
forlineinf1:
new_str=line.replace("aaa","cc")
f2.write(new_str)

本文来自企鹅号 - 乐想屋媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 乐想屋媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档