目录
1.文本文档函数
- file.close() 关闭文件
- file.flush() 刷新文件内部缓冲,即立刻把缓冲区的数据立刻写入文件。
- file.fileno() 返回整型的文件描述符。
- file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
- file.next() 返回文件下一行。
- file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有。
- file.readline([size]) 读取整行,包括 "\n" 字符。
- file.readlines([sizehint]) 读取所有行并返回列表。
- file.seek(offset[, whence]) 设置文件当前位置
- file.tell() 返回文件当前位置。
- file.truncate([size]) 截取文件,size指定截取位置。
- file.write(str) 将字符串写入文件,没有返回值。
- file.writelines(sequence) 向文件写入字符串列表,需换行则要加入每行的换行符。
- file.name() 读取打开的文件名
2.open函数
(1)open语法参数
open()函数语法格式为:open(file, mode, buffering, encoding, errors, newline, closefd]
- (1)file文件位置,需要加单引号、双引号
- (2)mode为文件打开模式,有r,w,a等方式
- (3)buffering
- 0代表buffer关闭,只适用于二进制模式
- 1代表line buffer,只适用于文本模式
- >1表示初始化的buffer大小
- (4)encoding编码格式,一般为utf-8 或 gbk
- (5)errors 取strict 或 ignore
- strict:字符编码出现问题时,会报错
- ignore:字符编码出现问题时,会被忽略
- (6)newline可取值为None,\n,\r,",",\r\n 用于区分换行符,但这个参数只对文本模式有效
- (7)closed的取值,是与传入的文件参数有关
(2)open()打开文件模式
模式 | 描述 |
r | 只读方式打开,默认模式,文件的指针在开头。 |
rb | 二进制格式打开。 |
r+ | 打开文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。 |
w | 打开文件用于写入,若已存在则覆盖,否则创建新文件。 |
wb | 以二进制格式打开文件用于写入,若已存在则覆盖,否则创建新文件。 |
w+ | 打开一个文件用于读写,若已存在则覆盖,否则创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。若已存在则覆盖,否则创建。 |
a | 用于追加,若已存在,内容被写入最后面。如果不存在,创建新文件写入。 |
ab | 以二进制格式打开用于追加,若已存在,内容被写入最后面,若不存在,新建文件写入。 |
a+ | 用于读写,若已存在,内容被写入最后面。如果不存在,创建新文件写入。 |
ab+ | 以二进制格式打开用于读写,若已存在,内容被写入最后面。如果不存在,创建新文件写入。 |
(3)open案例
#创建文件
#w与w+模式都可是新建文件,若已存在则覆盖掉
f1=open("f:/test1234a.txt",'w');##以w+模式也可以
#在原文件后追加内容
a与a+都是在文件末尾追加内容,若文件不存在则新建s
str='追加内容'
f1=open("f:/hlq123.txt",'a+');
f1.write(str);
#清空原文件再写入内容
str='追加内容'
f1=open("f:/hlq123.txt",'w+');
f1.write(str);
(4)open指定编码格式
# 写入utf-8格式
data="中国美"
fh=open("f:/hlq_post.txt","w+" ,encoding="utf-8")
fh.write(data)
fh.close
# 写入二进制格式
data=b"\x89\x98"
fh=open("E:/hlq_post.txt","wb+")
fh.write(data)
fh.close
3.WITH OPEN
with open用到上下文管理器,优点在:若文件读写时产生IOError,会自动执行f.close()保存已写入的数据
(1)读文件
with open('/path/to/file', 'r') as f:
print(f.read())
(2)写文件
with open('/Users/michael/test.txt', 'w') as f:
f.writelines('Hello, world!')
#注意:python3后with open不再有write函数
(3)字符编码
with open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore') as f:
print(f.read())
(4)二进制文件
with open('/Users/michael/test.jpg', 'rb') as f:
print(f.read())
(5)同时打开多个文件
#可以进行多个文件同时打开,并且不用关心文件有关闭的问题
with open('a.txt','r',encoding='utf-8') as f,open('b.txt') as f1:
....