Python文件读写操作

Python文件读写操作

工作中,对文件的读写是非常频繁的,不管是从文件中读取数据,还是将数据写到文件中,都很频繁。本文介绍Python中的文件读写操作方法。

一、文件打开与关闭方法

在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。

open(文件名,访问模式)

访问模式:

r 以只读方式打开文件,文件的指针将会放在文件的开头。打开文件后,从文件的开头开始读取数据。

w 打开一个文件只用于写入。文件的指针也是在文件的开头,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

此外,还有很多其他模式:rb,wb,ab,r+,w+,a+,rb+,wb+,ab+,不一一介绍了。

使用close()函数关闭文件

# 新建一个文件,文件名为:file_a.txt,用于写入内容
f = open('file_a.txt', 'w')

# 关闭这个文件
f.close()

二、文件的读写操作

打开一个文件后,我们就可以对文件进行读写操作了。

1.写数据(write)

使用write()可以完成向文件中写入数据

f = open('file_b.txt', 'w')
# 写入内容
f.write('当我和拥挤的人群一同在路上走过时,\n我看见您从阳台上送过来的微笑,\n我歌唱着,\n忘却了所有的喧哗')
f.close()

注意:

运行代码后,如果文件不存在那么创建,如果存在那么就打开文件。

如果文件访问模式是w,没有内容就会写入内容,有内容会覆盖内容,如果文件访问模式是a,没有内容会写入,有内容会追加。

2.读数据(read)

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

f = open('file_b.txt', 'r')
# 读取
content = f.read(15)
content_all = f.read()
print('content: ', content)
print('content_all: ', content_all)
f.close()

运行结果:

content:  当我和拥挤的人群一同在路上走过
content_all:  时,
我看见您从阳台上送过来的微笑,
我歌唱着,
忘却了所有的喧哗

注意:

如果open打开一个文件用于读取内容,那么可以不用写打开的模式,即只写 open('file_b.txt')

如果读了多次,那么后面读取的数据是从上次读完后的位置开始的。

三、按行读取文件

1.按行读取所有数据(readlines)

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为列表的一个元素。

2.按行读取数据(readline)

readline可以按照行的方式读取文件中的内容,会从文件的第一行开始读,多次读取就会依次向下读取,当没有内容时返回None。

如果在readline()中传入一个数字num作为参数,那么会返回读取行的前num个字符。

这里我们使用上下文管理器来打开文件

with open('file_b.txt', 'r') as f:
    content_list = f.readlines()
    print('content_list: ', content_list)


with open('file_b.txt', 'r') as f:
    content_line1 = f.readline()
    print('content_line1: ', content_line1)
    content_line2 = f.readline()
    print('content_line2: ', content_line2)

运行结果:

content_list:  ['当我和拥挤的人群一同在路上走过时,\n', '我看见您从阳台上送过来的微笑,\n', '我歌唱着,\n', '忘却了所有的喧哗']
content_line1:  当我和拥挤的人群一同在路上走过时,

content_line2:  我看见您从阳台上送过来的微笑,

四、定位读取位置

1.在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取。每个中文占的位置为2。

with open('file_b.txt', 'r') as f:
    content_line = f.readline()
    # 获取当前位置
    position = f.tell()
    print(position)

2.如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()

seek(offset, from)有2个参数,offset:偏移量,from:读取位置(0:表示文件开头,1:表示当前位置,2:表示文件末尾)

with open('file_b.txt', 'r') as f:
    position = f.tell()
    print(position)
    f.seek(10, 0)
    position = f.tell()
    print(position)

五、文件的其他操作

有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这些功能。

1.文件重命名

os模块中的rename()可以完成对文件的重命名操作

rename(需要修改的文件名, 新的文件名)

import os

os.rename("file_b.txt", "file_c.txt")

2.删除文件

os模块中的remove()可以完成对文件的删除操作

remove(待删除的文件名)

os.remove("file_a.txt")

3.创建文件夹

os.mkdir("files")

4.获取当前目录

print(os.getcwd())

5.改变默认目录

os.chdir("files")

6.获取目录列表

print(os.listdir())

7.删除文件夹

os.rmdir("files")

 

 

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小斌哥ge

非常感谢,祝你一切顺利。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值