Python之文件的读写操作(数据处理系列)

本文详细介绍了Python中的文件读写操作,包括open()函数的参数、withopen的自动关闭机制,以及read(),readline(),readlines()等方法的使用。同时讲解了二进制文件的读写,并强调了在实际应用中处理文本文件时的数据处理技巧。
摘要由CSDN通过智能技术生成

Python之文件的读写操作


目录

Python之文件的读写操作

文件的读操作

open()函数

open 和 with open的区别

read()

reanline()

readlines()

遍历文件常用操作!!!

文件的写操作

二进制文件的读写

 实际如何用?

总结


文件的读操作

open()函数

参数:

  • file:要打开文件的路径,可以是相对或绝对路径。
  • mode:打开方式,简单的有:'r' , 'w',  'a'  ,分别是读 、写 、追加写
  • encoding:打开的编码方式,一般windows默认gbk模式,为了防止乱码需要你搞清文件的编码方式。

创建文件:同级目录下边创建一个hello.txt文件,文件内容如下:

hello,我是小政

今天是周五!

明天是周六!

后天是周日!

f = open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')
print(f.read())
f.close()

# open函数会返回一个文件句柄,用来操作这个文件,这里通常用 f 接收。
# 关键字参数:
# 1.file是文件路径,这里是相对路径
# 2.mode是文件打开方式,r是只读
# 3.encoding是以什么编码方式打开,utf-8,windows操作系统默认是gbk模式打开

# 用完文件之后需要手动关闭。

open 和 with open的区别

# with open会自动关闭文件,而open需要手动f.close关闭
with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8') as f:
    f.read()

 注意:推荐使用with open!!!这样我们可以不用手动关别文件,后边都用with open!!!


题外话:(可看可不看) 程序如何读取文件呢?

        首先讲一下我们的程序如何把文件读进来的,以hello.txt为例,程序首先会给os发请求,os再对硬盘进行操作,hello.txt文件在磁盘上是以01二进制进行存储的,os再读取的时候需要decode解码,解码的方式需要与文件保存的编码方式一样,才可以。一般windows的os解码方式是gbk的,如果你的文件是utf-8的,那么你在读取文件的时候,可能会报以下的错误 :


read()

#read()函数是将文件里边的所有字符读出来
with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')as f:
    print(f.read())


#read(3)就是读三个字符
with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')as f:
    print(f.read(3))


#seek(3)光标转移到第三个字符,开始读3个字符
with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')as f:
    f.seek(3)
    print(f.read(3))

 注意:这里一个字符就是一个数字 or 汉字 or 字母。换行也算一个字符。

reanline()

#readline()每次读一行,随着光标往下读。
with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')as f:
    print(f.readline())
    print(f.readline())

注意:readline() 会把每一行末尾的换行符也读进来。

readlines()

with open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')as f:
    lines = f.readlines()
    for line in lines:
        print(line,end = "")

重点来啦!!!上边的read,readlines都是将文件一块都读到内存中来,小数据集还可以,大数据集的话不得爆了,所以不常用,当作了解,掌握下边的遍历文件操作!!!

遍历文件常用操作!!!

f = open(file = 'hello.txt',mode = 'r',encoding = 'utf-8')
for line in f:
    print(line,end = "")

# f是文件句柄,也是一个可迭代对象,line就是每次读f中的一行
# 这里不限于打印,你可以对line按照需求做各种操作,来获得你想要的数据。

文件的写操作

write()

f = open(file = 'hello.txt',mode = 'w',encoding = 'utf-8')
f.write('hello,我是小政!')
# w的方式每次打开都会清空文件,再往里边写


f = open(file = 'hello.txt',mode = 'a',encoding = 'utf-8')
f.write('hello,我是小政!\n')
f.write('hello,我是小政!\n')
# a的方式打开,从上次光标的位置开始写

注意:以 'w' 的方式打开文件的时候,会自动清空文件内容,即使没有写。


二进制文件的读写

读二进制

with open(file = 'hello.txt',mode = 'rb')as f:
    data = f.read()
    print(data)
    print(type(data))

# rb表示读的是二进制字节流

写二进制

with open(file = 'hello.txt',mode = 'wb')as f:
    f.write("你好".encode())

注意:二进制字节不需要解码,所以不需要指定encoding

 实际如何用?

 举个例子,我拿一个brightkite数据集的一小部分:

0    2010-10-17T01:48:53Z    39.747652    -104.99251    88c46bf20db295831bd2d1718ad7e6f5
0    2010-10-16T06:02:04Z    39.891383    -105.070814    7a0f88982aa015062b95e3b4843f9ca2
0    2010-10-16T03:48:54Z    39.891077    -105.068532    dd7cd3d264c2d063832db506fba8bf79
0    2010-10-14T18:25:51Z    39.750469    -104.999073    9848afcc62e500a01cf6fbf24b797732f8963683
0    2010-10-14T00:21:47Z    39.752713    -104.996337    2ef143e12038c870038df53e0478cefc
0    2010-10-13T23:31:51Z    39.752508    -104.996637    424eb3dd143292f9e013efa00486c907

f = open(file = 'brightkite.txt',mode = 'r',encoding = 'utf-8')
for line in f:
    line = line.strip().split('\t')
    if len(line) !=5:
        continue
    user, loc, t, lat, lng = line
    #接下来就是对得到的数据,进行需要的操作。

总结

        实际读文件过程中,你可能需要一行一行读进来,然后split分割啊len计算长度啊strip去掉前后空格啊,这些都是需要你看别人优秀的代码,一点一点积累的。文件的读写操作就这么多知识,重点是你需要在实战中积累技巧,别人怎么搞的,然后形成自己的代码模板。

我相信,你看完这篇文章,已经能对文件进行简单的读写操作了,那么接下来请找个实战项目,去看看优秀的编程者如何使用技巧的吧 ~ 下期可能开始更新Python数据预处理相关的知识,或者机器学习的知识了。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值