python学习笔记(十六)之文件
打开文件用open函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Open file and return a stream. Raise IOError upon failure.
重点关注两个参数:
- file:要打开的文件的路径,可以绝对路径或相对路径
- mode:文件打开模式
打开模式 | 执行操作 |
‘r’ | 只读(默认模式) |
'w' | 只写,会覆盖已存在的文件 |
'x' | 如果文件已存在,用此模式打开将引发异常 |
'a' | 追加模式 |
'b' | 二进制模式 |
't' | 文本模式(默认情况) |
'+' | 可读写模式(可添加到其他模式中使用) |
'u' | 通用换行符支持 |
open函数返回一个文件对象,常用的文件对象方法有:
文件对象方法 | 执行操作 |
f.close() | 关闭文件 |
f.read(size = -1) | 读取size个字符,未给定size或size未负,则读取所有字符 |
f.readline() | 按行读取 |
f.write(str) | 将str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq,seq应是一个返回字符串的可迭代对象 |
f.seek(offset, from) | 移动文件指针,从from(0代表文件头,1代表当前位置,2代表文件尾)偏移offser字节 |
f.tell() | 返回当前文件指针位置 |
打开文件,默认情况是只读模式'r'和文本模式't'
>>> f = open('./test.txt')
读取文件,用read()方法,未指定size,则读取整个文件。
>>> f.read()
'江雪\n唐 柳宗元\n千山鸟飞绝,\n万径人踪灭。\n孤舟蓑笠翁,\n独钓寒江雪。'
读取文件后,文件指针指向文件尾,可以使用seek重新设置偏移量
>>> f.tell()
101
>>> f.seek(0,0)
0
>>> f.tell()
0
或者使用list()将文件转化为列表,或用for循环迭代读取。
>>> for i in f:
... print(i)
...
江雪
唐 柳宗元
千山鸟飞绝,
万径人踪灭。
孤舟蓑笠翁,
独钓寒江雪。
>>> lines = list(f)
>>> lines
['江雪\n', '唐 柳宗元\n', '千山鸟飞绝,\n', '万径人踪灭。\n', '孤舟蓑笠翁,\n', '独钓寒江雪。']
>>> for i in lines:
... print(i)
...
江雪
唐 柳宗元
千山鸟飞绝,
万径人踪灭。
孤舟蓑笠翁,
独钓寒江雪。
向文件写内容,用write()方法
>>> f = open('./test.txt', 'w')
>>> str1 = '''《静夜思》
...
... 床前明月光,疑是地上霜。
... 举头望明月,低头思故乡。
... '''
>>> f.write(str1)
37
>>> f.close()
>>> f = open('./test.txt')
>>> for i in f:
... print(i)
...
《静夜思》
床前明月光,疑是地上霜。
举头望明月,低头思故乡。