python文件读取之open

读文件读文件需要三个步骤:

步骤1: 以读文件的模式打开一个文件对象,使 用Python内置的open()函数,传入文件名和标示符。标示符'r'表示读。如果文件不存在,open()函数就会抛出一个IOError的错误。

步骤2: 如果文件打开成功,调用read()等方法读取文件内容,Python把内容读到内存,用一个ret对象表示。

步骤3: 调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源。

读文件具有如下三种方法:

方法一:read()方法 read()方法用于一次性将文件里的内容全部读取,也可以指定每次读多少个字节,如read(8)就是从文件开始读取5个字节。

方法二:readline()方法 readline( )用于一行行地读出并显示文件内容。如果读到文件末尾,就返回一个空字符串。

方法三:readlines()方法 readlines()方法自动将文件内容存储为列表。

open 函数有3个参数:file, mode, encoding

file:表示要保存或要打开的文件的路径。

mode:表示数据以何种方式打开、写入文本。

encoding:指定了文件的编码方式。如utf-8等

其中mode可选

值得注意的是文件指针这一个概念,文件指针在开头意味着你只能从开头读取或写入数据,以追加模式打开文件意味着文件指针在末尾,只能从末尾开始读写。

例如我以r+模式打开txt文件进行编写,txt文件内容如下

you are the best
you can do it

代码如下

f = open("1.txt", "r+", encoding='utf-8')
ret = f.read()#read函数将文本文件中的所有内容以字符串保留下来
f.seek(len(ret)+1)  # 将文件指针移到末尾
f.write("\nyes")  # 写入字符串
f.seek(0, 0)  # 文件指针回到头部
ret = f.read()
print(ret)
f.close()

结果会是

题外话:seek函数

seek ()方法一般形式为: 文件对象. seek (offset, whence) 功能:把文件指针移动到相对于whence的offset位置。其中,offset表示要移动的字节数,移动时以offset为基准,offset为正数表示向文件末尾方向移动,为负数表示向文件开头方向移动;whence指定移动的基准位置,为0表示以文件开始处作为基准点,为1表示以当前位置为基准点,为2表示以文件末尾作为基准点。 不得不提一下: 在不同的文件打开格式下seek的参数是有限制的,例如在r+下,seek的whence参数只能是0,seek的offset参数只能为正数。原因是在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,而使用b模式又是以二进制模式打开文件。

如果上面函数没有用seek函数直接移动而是以write函数直接写入的话如下

f = open("1.txt", "r+", encoding='utf-8')#这行r+改a+可以得到上一个代码块的运行结果
ret = f.read()
# f.seek(len(ret)+1)  # 将文件指针移到末尾
f.write("\nyes")  # 写入字符串
# f.seek(0,0)  # 文件指针回到头部
# ret = f.read()
print(ret)
f.close()

运行结果就会是

值得注意的是r+的写入方法是覆盖式的,这也是问什么len(ret)要加1的原因

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值