python中文件IO操作

        文件读写是最常见的IO操作,python中内置了操作文件读写的函数,在读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件),本文将从下面三个方面介绍python中的文件IO

  1. 读文件操作

  2. 写文件操作

  3. StringIO和BytesIO操作

                                   读文件

        想要读取数据文件,首先我们要打开文件,这里需要使用python内置的open()函数来打开一个文件,创建一个file对象,

open()函数语法:

open(file_name,[,access_mode][,buffering])

参数的含义:

  • file_name:file_name变量是访问文件名称和字符串值。

  • access_mode:打开的方式,只读、写入、追加等,参数默认值为只读。

  • buffering:buffering为0,表示不会有寄存,为1,表示访问文件会寄存行,大于1,表示寄存区的缓冲大小,为负值,则寄存区的缓冲大小为系统默认。

不同模式打开文件的方式:

模式描述
r以只读方式打开文件,文件的指针将会放在文件的开头
w文件存在,写入从开头编辑,原有内容覆盖,文件不存在,创建一个新的文件
a文件存在,在文件末尾追加写入,文件不存在,创建一个新的文件
b二进制模式
+打开一个文件进行更新

示例:

方法1:a=open('./file.txt','r')print(a.read())a.close()
[out]:'hello'解析:文件打开成功,调用read()方法可以一次性读取文件的全部内容,python把内容读到内存,用一个str对象表示。之后调用close()方法关闭文件,文件使用之后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开文件的数量也是有限的
方法2:with open('./file.txt','r')as f:    print(f.read())[out]:'hello world'解析:调用with语句可以自动关闭文件
注意1:二进制文件前面的读取文件默认是文本文件,且编码的格式为'utf-8',如果想要读取二进制文件,比如图片和视频等,又该如何操作b=open('./file.jpg','rb')print(b.read())
注意2:字符编码要读取非utf-8编码的文件,此时就需要给open()函数传入encoding参数c=open('./file.txt','r',encoding='gbk')print(c.read())

                                       写文件

        对于文件的写入语法,其实和文件的读取相同,只需更改access_mode参数即可

示例:​​​​​​​

方法1:d=open('./file.txt','w')d.write('hello shanghai')d.close方法2:with open('./file.txt','a')as e:    e.write('hello shanghai')

                             StringIO和BytesIO操作

有时候我们对数据的读取不一定是从文件中读取,也可以从内存中读写,而StringIO和BytesIO分别操作的是字符串数据和二进制数据

示例:​​​​​​​

操作1:StringIOfrom io import StringIOf=StringIO()f.write('hello world')[out]:5print(f.getvalue())[out]:hello
操作2:BytesIOfrom io import BytesIOf=BytesIO()f.write('上海',encode('utf-8'))[out]:6print(f.getvalue())

拓展使用

1、read()、readline()、readlines()三种读数据方法​​​​​​​

f=open('./file.txt','r')# 光标移动到第1个字符之后f.seek(1)# read是读取整个文件后面的所有字符,读完后,会把光标移动到你读完的位置f.read()# readline是读光标所在这一行的在光标后面的所有字符f.readline()# readlines和read类似,但把读的字符按行来区分做成了列表f.readlines()

2、循环读取文件​​​​​​​

方法1:with open('./file.txt','r')as f:for index,line in enumerate(f.readlines()):    print(index,line.strip())
方法2:for index,line in enumerate(f):    print(index,line.strip())

3、对list、tuple、dict、set的文件操作​​​​​​​

import pickle list1=[1,2,3]# list文件的写入a=open('./file.txt',mode='wb')# 对于list列表形式,需要导入pickle模块,使用二进制模式wb写入pickle.dump(list1,a)a.close()# list文件的读取b.open('./file.txt',mode='rb')print(pickle.load(b))b.close()

随着大数据的时代的到来,数据变得越来越重要,数据可以帮助我们来看清行业的本质,也可以帮助我们更加快速的了解一个行业,关注公众号——DT学说,走进数据的时代

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值