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

Python文件读写操作

作者头像
Python碎片公众号
发布2021-02-26 14:31:25
5700
发布2021-02-26 14:31:25
举报
文章被收录于专栏:Python碎片公众号的专栏

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

一、文件打开与关闭方法

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

语法:open(文件名,访问模式)

访问模式:

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

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

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

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

使用close()函数关闭文件。

代码语言:javascript
复制
# 新建一个文件,文件名为:file_a.txt,用于写入内容
f = open('file_a.txt', 'w')
 
# 关闭这个文件
f.close()

二、文件的读写操作

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

1.写数据(write)

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

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

注意:

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

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

2.读数据(read)

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

代码语言:javascript
复制
f = open('file_b.txt', 'r')
# 读取
content = f.read(15)
content_all = f.read()
print('content: ', content)
print('content_all: ', content_all)
f.close()

运行结果:

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

注意:

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

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

三、按行读取文件

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

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

2.按行读取数据(readline)

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

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

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

代码语言:javascript
复制
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)

运行结果:

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

四、定位读取位置

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

代码语言:javascript
复制
with open('file_b.txt', 'r') as f:
    content_line = f.readline()
    # 获取当前位置
    position = f.tell()
    print(position)

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

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

代码语言:javascript
复制
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(需要修改的文件名, 新的文件名)

代码语言:javascript
复制
import os
 
os.rename("file_b.txt", "file_c.txt")

2.删除文件

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

remove(待删除的文件名)

代码语言:javascript
复制
os.remove("file_a.txt")

3.创建文件夹

代码语言:javascript
复制
os.mkdir("files")

4.获取当前目录

代码语言:javascript
复制
print(os.getcwd())

5.改变默认目录

代码语言:javascript
复制
os.chdir("files")

6.获取目录列表

代码语言:javascript
复制
print(os.listdir())

7.删除文件夹

代码语言:javascript
复制
os.rmdir("files")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

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