简介
长久保存信息的一种数据信息集合
常用操作
打开关闭(文件一旦打开,需要关闭操作)
读写内容
查找
open()
简介
负责打开文件
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file
: 必须有,表示文件的路径和名称
mode
: 表明文件用什么方式打开
参数表
参数
释义
r
以只读方式打开(默认)
w
写方式打开,会覆盖以前的内容
x
创建方式打开,若文件已经存在,会抛出 FileExistsError
a
以追加的方式对文件内容进行写入
b
二进制方式写入
t
文本方式打开(默认)
+
可读写
U
universal newline mode (deprecated)
举例
>>> f = open("text.txt", 'w') # 使用了 w,若目录中没有所指定的文件,会先自动创建
>>> f.close() # f 也称“文件句柄”
>>>
with 语句
with
语句使用的技术是一种称为上下文管理协议的技术(ContextManagementProtocal)
自动判断文件的作用域,自动关闭不再使用的已打开的文件句柄
>>> with open("text.txt") as f:
... pass
...
>>>
写操作
write(string)
向文件写入一个字符串或字节流
每次写入后,都会记录一个“写入指针”
该方法可以反复调用,每次都在上回记录的“写入指针”后写入内容,直至文件被关闭
>>> with open("text.txt", 'a') as f:
... f.write("风急天高猿啸哀
")
... f.write("渚清沙白鸟飞回
")
... f.write("无边落木萧萧下
")
... f.write("不尽长江滚滚来
")
...
8
8
8
8
>>>
writeline(lines)
lines
代表一个列表
功能:直接将列表类型的各元素连接起来写入文件
>>> lines = ["万里悲秋常作客
", "百年多病独登台
", "艰难苦恨繁霜鬓
", "潦倒新停浊酒杯
"]
>>> with open("text.txt", 'a') as f:
... f.writelines(lines)
...
>>>
区别
write
函数的参数只能是字符串
writerlines
的参数可以是字符串,也可以是字符序列
读操作
read()
f.read(size=-1)
从文件中读入整个文件内容
参数可选,如果给出,则读入前 size
长度的字符串或字节流
>>> with open("text.txt") as f:
... f.read()
...
'风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
'
>>>
>>> f = open("text.txt")
>>> f.read(8)
'风急天高猿啸哀
'
>>> f.read(8)
'渚清沙白鸟飞回
'
>>> f.close()
>>>
readline()
f.readline(size = -1)
从文件中读入一行内容
参数可选,如果给出,则读入该行前 size
长度的字符串或字节流
>>> f = open("text.txt")
>>> f.readline()
'风急天高猿啸哀
'
>>> f.readline()
'渚清沙白鸟飞回
'
>>> f.close()
>>>
readlines()
f.readlines(hint=-1)
从文件中读入所有行,以每行为元素形成一个列表
参数可选,如果给出,读入 hint
行
>>> with open("text.txt") as f:
... for line in f.readlines():
... print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>>
>>> with open("text.txt") as f:
... for line in list(f): # 文件句柄可以强制转成 list
... print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>>
“位置”的查询与移动
tell()
>>> f = open("text.txt")
>>> f.tell()
0
>>> f.readline()
'风急天高猿啸哀
'
>>> f.tell()
16
>>> f.read(4)
'渚清沙白'
>>> f.tell()
24
>>>
seek(cookie, whence=0)
改变当前文件操作指针的位置
whence
0:文件开头(默认)
1:从文件当前位置开始偏移
2:文件结尾
移动的单位是字节(byte)
一个汉字由若干个字节构成,一般为 2,也有例外
返回文件只针对当前位置
>>> f = open("text.txt")
>>> f.read(4)
'风急天高'
>>> f.tell()
8
>>>
>>> f.seek(0)
0
>>> f.readline()
'风急天高猿啸哀
'
>>>
>>> f.seek(8, 0)
8
>>> f.readline()
'猿啸哀
'
>>>