文件的读写通常包含以下步骤:
-
文件的打开:open()
open或with open会返回文件对象,必须用read或readlines之后才能打印
在此我会介绍with open 与open之间的区别。提前剧透with open优于open - 文件的读入:read()
- 文件的写入:write()
- 文件的关闭:close()
另外介绍两个模块的内容:
- 文件的定位
- 文件的属性
一、文件的打开:open与with open(返回文件对象)
1、open
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file
:包含路径的文件名。绝对路径或者是相对路径
mode|
:选择不同的模式可以对文件进行不同的操作,
默认属性’rt’
,即以只读方式打开文本文件。
模式 | 描述 |
---|---|
‘r’ | 只读方式: 默认属性 |
‘w’ | 写入模式:如果该文件已存在则打开文件,并从开头开始编辑,原有内容被删除。如果文件不存在,创建新文件 |
‘x’ | 只写模式:新建一个文件,如果该文件已存在则会报错。 |
‘a’ | 追加模式:如果文件存在,指针放在文件结尾。新内容将会被写入到已有内容之后。如果文件不存在,创建新文件写入 |
‘b’ | 二进制模式。 |
‘t’ | 文本模式: 默认属性 |
‘+’ | 打开一个文件进行更新(可读可写) |
‘U’ | 通用换行模式(不推荐) |
以下几点是总结:参考原文:https://www.cnblogs.com/xyf9575/p/7039548.html
-
w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
w+ 是读写内容,只要 沾上w,肯定会清空原来的文件 -
r 读模式,只能读,不能写,而且文件必须存在
r+ 是读写模式,只要 沾上r,文件必须存在 - a 追加模式,也能写,在文件的末尾添加内容
- rb+、wb+、ab+,这种是二进制模式打开或者读取,一些音乐文件
2、with open与open的区别
with open() as f的好处
- 无论出现是否出现error都会关闭文件
-
使用它的时候python会自动确定关闭时间,你只管打开文件并使用它。
所以with open 是我们的首选,而非只使用open
二、文件的读入:
此模块常用的函数有:
pi_digits.txt
3.1415926535
8979323846
2643383279
file_reader.py(看一下read()和readlines()的区别)
>>
>
file_name
=
'pi_digits.txt'
>>
>
with
open
(
file_name
)
as
f
:
>>
>
print
(
f
.
read
(
)
)
>>
>
print
(
f
.
readlines
(
)
)
3.1415926535
8979323846
2643383279
###以上三行结果是read的
[
'3.1415926535\n'
,
' 8979323846\n'
,
' 2643383279'
]
### 此行结果是readlines的
三、文件的写入
1、写入空文件:以’w’方式打开文件。
demo1
file_name
=
"love_letter"
with
open
(
love_letter
,
'w'
)
as
f
:
f
.
write
(
"I love you\n"
)
f
.
write
(
"i love you\n"
)
最终会显示
I love you
i love you
2、在旧文件后面添加新内容:以’a’方式打开
demo2
file_name
=
"love_letter"
with
open
(
file_name
,
'a'
)
as
f
:
f
.
write
(
"I also love you\n"
)
最终会在demo1下面添加一行
I also love you
四、文件的关闭
如果是with open打开的不用管这个,如果是open打开的则需要在文末输入下列代码
f
.
close
(
)
五、文件的定位(指针)
指针就相当于我们在word中输入时候的光标,光标在哪文件就从哪开始输入。
- f.tell():报告当前指针位置
-
f.seek(offset,from)
offset代表文件指针的偏移量,
from代表从何处开始算:0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节)
使用open()方法打开文件时候,指针会默认在文件开始的地方。
f.read(3)是从指针所在的地方往后读取三个字符,也就是说不改变指针的位置的话,f.read(3)就是读取文件开头的三个字符。
f.write()则是将指针放在文件末尾进行写入,写完之后指针依旧会在文件末尾。