python中文件的读写与打开方式(详解)
2021/12/15 14:18:34
本文主要是介绍python中文件的读写与打开方式(详解),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
公众号‘小鹏长翅’同步发布
文件的读写是我们经常用到的操作,常用的编程语言都会提供一个内置函数,通过输入'文件路径'和'文件打开模式'来打开一个文件对象。
我们来看下python中的文件读写操作
一、Python中的文件打开模式
打开模式 | 用法 |
---|---|
r | 以只读的方式打开文件,若文件不存在,会报错 |
r+ | 可以同时读写,若文件不存在,会报错,写入时是覆盖写入 |
w | 以只写的方式打开文件,若文件不存在则新建,写入时是清空写入 |
w+ | 可以同时读写,若文件不存在则新建,写入时是清空写入 |
a | 以只追加可写模式打开文件,若文件不存在则新建 ,写入时是追加写入 |
a+ | 可以同时读写,若文件不存在则新建,写入时是追加写入 |
下面我们分别试一下这几种打开模式的用法(open)
我们先在D盘创建一个note1.txt文件
r 只读
filepath = r'D:\note1.txt'#找到文件的路径 file1 = open(filepath,'r',encoding='utf-8') print(file1.read())#read()函数--读取全部内容,后有详解 #通过只读'r'的方式打开文件 #因为文件里是中文,所以我们指定编码方式为‘utf-8’ #'r'是open函数中‘打开方式’的缺省值,可以省略 file1.close()#关闭文件 使用open()时,必须要有close(),否则会一直占用内存 >>> 好好学习 天天向上
用只读'r'打开一个不存在的文件'note2.txt',则会报错
filepath = r'D:\note2.txt'#一个不存在的文件 file1 = open(filepath,'r',encoding='utf-8')#通过读'r'的方式打开文件 print(file1.read()) file1.close()#关闭文件 使用open()时,必须要有close(),否则会一直占用内存 >>>报错 FileNotFoundError: [Errno 2] No such file or directory: 'D:\\note2.txt'
r+ 读写--覆盖写入
filepath = r'D:\note1.txt' file1 = open(filepath,'r+',encoding='utf-8')#通过'r+'的方式打开文件 file1.write('欢迎交流')#以覆盖写入的方式写入'欢迎交流' file1.seek(0)#seek(n):光标回到文件首位,之后偏移n位 print(file1.read()) file1.close() >>> 欢迎交流#可以发现,'欢迎交流'覆盖了'好好学习' 天天向上
需要注意的是我们这块用到了一个seek(n)函数,这是因为我们写入内容后,光标位置在刚写入内容的后边,而读取文件内容时,是从光标的位置开始往后读,这时候就需要移动下光标位置以能获取文件全部内容。
我们看下上边例子中,不使用seek移动光标,输出的内容。
filepath = r'D:\note1.txt' file1 = open(filepath,'r+',encoding='utf-8') file1.write('欢迎交流')#写入之后,光标停在'流'字后边 #file1.seek(0)#seek(n): print(file1.read()) file1.close() >>> 天天向上#只会读取出光标后边的内容
用'r+'打开一个不存在的文件'note2.txt',同样会报错
filepath = r'D:\note2.txt'#一个不存在的文件 file1 = open(filepath,'r+',encoding='utf-8')#通过'r+'的方式打开文件 print(file1.read()) file1.close() >>>报错 FileNotFoundError: [Errno 2] No such file or directory: 'D:\\note2.txt'
w 只写
只写‘w’方式,想读取文件内容,会报错
filepath = r'D:\note1.txt' file1 = open(filepath,'w',encoding='utf-8')#通过只写'w'的方式打开文件 print(file1.read())#读取文件内容 file1.close() >>>报错 io.UnsupportedOperation: not readable
在已存在的文件中进行写入
会清空文件中之前的内容
filepath = r'D:\note1.txt' file1 = open(filepath,'w',encoding='utf-8')#通过只写'w'的方式打开文件 file1.write('欢迎交流') file1.close()
然后我们看下note1.txt,确实清空了之前的内容
只写‘w’方式打开不存在的文件,会新建文件并写入内容
filepath = r'D:\note_new.txt'#不存在的文件 file1 = open(filepath,'w',encoding='utf-8')#通过只写(w)的方式打开文件 file1.write('这是个新文件') file1.close()
然后去我们的D盘查看,确实多了一个note_new.txt的文件
w+ 读写--清空写入
'w+'比'w'模式多了同时读写的功能,其他完全一样。
filepath = r'D:\note_new.txt'#不存在的文件 file1 = open(filepath,'w+',encoding='utf-8')#通过'w+'的方式打开文件 file1.write('这是个新文件') file1.seek(0)#光标回到首位 print(file1.read()) file1.close() >>>> 这是个新文件
a 只写--追加写入
我们经常会有这样的需求,在写入内容时不想删除之前的内容。
打开模式'a'就可以满足。
与打开模式'w'唯一的区别就是写入方式为'追加写入'
也可以理解为比'w'方式多了一个'把光标移到末尾'的操作
filepath = r'D:\note1.txt' file1 = open(filepath,'a',encoding='utf-8')#通过追加写'a'的方式打开文件 file1.write('欢迎交流')#追加写入内容 file1.close()
然后我们看下note1.txt
确实以追加的方式写入了内容
a+ 读写--追加写入
'a+'比'a'模式多了同时读写的功能,其他完全一样。
filepath = r'D:\note1.txt' file1 = open(filepath,'a+',encoding='utf-8')#通过'a+'的方式打开文件 file1.write('\n一起进步')#追加写入内容 file1.seek(0)#把光标移到首位 print(file1.read()) file1.close() >>> 好好学习 天天向上 欢迎交流 一起进步
二、with open
为了避免忘记或者为了避免每次都要手动关闭文件,我们可以使用with语句
用法与open()一样
优点:
1)它可以处理多个文件
2)不需要写close()方法
filepath1 = r'D:\newfile1.txt' filepath2 = r'D:\newfile2.txt' with open(filepath1,'w+') as file1,open(filepath2,'w+') as file2: #同时打开两个新建文件 file1.write('good good study')#文件1写入内容 file2.write('day day up')#文件2写入内容 file1.seek(0)#文件1光标移到首位 file2.seek(0)#文件2光标移到首位 print(file1.read()) print(file2.read()) >>> good good study day day up
此时D盘也多了两个文件,且内容也是我们写入的内容
三、文件读取相关方法
方法 | 作用 |
---|---|
read() | 读取文件全部内容,返回值是字符串 |
readline() | 读取一行的内容,返回值是字符串 |
readlines() | 逐行读取文件所有内容,返回值是列表 |
read().splitlines() | 读取文件全部内容,返回值是列表,不出现 |
下面我们分别试下这几种方法
先建一个new_file.txt,内容如下
- read()
filepath = r'D:\new_file.txt' with open(filepath,encoding='utf-8') as file:#打开文件 print(file.read())使用read()读取全部内容 >>> 好好学习 天天向上 欢迎交流 一起进步
read()也可以填一个参数,用来读取指定长度的内容
filepath = r'D:\new_file.txt' with open(filepath,encoding='utf-8') as file:#打开文件 print(file.read(3))#获取3个字符 >>> 好好学
- readline()
filepath = r'D:\new_file.txt' with open(filepath,encoding='utf-8') as file:#打开文件 print(file.readline())#读取一行内容,返回字符串 >>> 好好学习
- readlines()
filepath = r'D:\new_file.txt' with open(filepath,encoding='utf-8') as file: print(file.readlines())#读取一行内容,返回列表 >>> ['好好学习\n', '天天向上\n', '欢迎交流\n', '一起进步']
- read().splitlines()
splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False(默认为False),不包含换行符,如果为 True,则保留换行符
filepath = r'D:\new_file.txt' with open(filepath,encoding='utf-8') as file: print(file.read().splitlines())#读取全部内容,返回列表,不包括换行符 >>> ['好好学习', '天天向上', '欢迎交流', '一起进步']
这篇关于python中文件的读写与打开方式(详解)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器