1.文件打开:open()
f = open(file,[,mode],[,encoding],[,buffering])
f:open()返回的文件对象;
file:要打开的文件(绝对路径+文件名);
mode:指定模式(只读:r,写入:w,追加:a,等),默认只读;
encoding:指定文件编码(utf-8、gbk、gb2312、gb18030、ANSI、utf-8-sig);
buffering:若设置为0,不会有寄存;
设置为1,访问文件时会寄存行;
设置为大于1的数,表明是寄存区的缓冲大小;
设置为负数时,则缓存区的大小为系统默认。
mode制定模式描述:
r : 只读,指针在文本最前(0,0),只能进行读,不可写,这是默认模式
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+: 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w : 写,指针在文本最前(0,0),如果没有目标文本,会新建一个空目标文本;如果有,会清除目标文本中的所有内容,相当
于新建一个空的目标文本后替换原文本
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 追加,如果有目标文本,指针会跳到文本的最后;如果没有找到,同w模式会新建一个空的文本。``
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写
入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存
在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文
件用于读写。
2.文件属性
f=open("eal.txt", 'r', encoding='utf-8')
f.name
Out[1]: 'E:\\eal.txt'
f.mode
Out[2]: 'r'
f.closed
Out[3]: False
f.close()
f.closed
Out[4]: True
转存失败重新上传取消
3.文件的读写--read()/write()
f.read(size): 从文件中读取指定的字节数,若未指定,读取所有。size输入字节数;
f.readline(): 读取整行,包括"\n";
f.readlines():读取所有行,并返回列表;
f.write(): 将字符串写入文件,并返回字符串长度;
f.writelines():向文件写入一个序列字符串列表,如果需要换行,需要自己假如换行符
f.flush(): 刷新文件缓存,直接把内部缓冲的数据写入文件。
4.文件光标定位
函数名 | 描述 |
f.seek(offset[,from]) | 设置文件的当前位置,即指针位置,from=0时,文件开头位置,from=1当前位置,from=2文件末尾 |
f.tell() | 返回文件的当前位置,即指针位置 |
5.文件的关闭--close()
文件打开后都需要关闭,以免浪费内存空间。
或者使用with as语法,自动关闭文件。
#方法一
f=open("eal.txt", 'r', encoding='utf-8')
f.close()
#方法二
with open("eal.txt", 'r', encoding='utf-8') as f:
ll = [line for line in f.readlines()]