1、文件的打开方式python
文件打开方法: open(name[,mode][,buf][,encoding])linux
参数解释:name 文件路径缓存
mode 打开方式函数
buf:缓冲buffering大小编码
encoding: 文件的编码格式spa
文件打开方式:指针
2、文件的读取code
read():读取整个文件对象
read(size):读取size个字节blog
readline([size]):读取一行
readlines([size]):读取buffering个字节,返回每一行所组成的列表
iter():使用迭代器读取文件
给出一个文本文件:E://ME.txt,内容以下:
说给本身听 ---三毛 若是有来生, 要作一棵树, 站成永恒, 没有悲欢的姿式, 一半在土里安详, 一半在风里张扬, 一半洒落阴凉, 一半沐浴阳光, 很是沉默很是骄傲, 从不依靠,从不寻找。
#使用read()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.read(); print(data);
执行结果以下:
说给本身听
---三毛
若是有来生,
要作一棵树,
站成永恒,
没有悲欢的姿式,
一半在土里安详,
一半在风里张扬,
一半洒落阴凉,
一半沐浴阳光,
很是沉默很是骄傲,
从不依靠,从不寻找。
#使用read(size)方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.read(30); print(data);
执行结果以下:
说给本身听
---三毛
如
#使用readline()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readline(); print(data);
执行结果以下:
说给本身听
#使用readline(30)方法:
f=open("E://ME.txt","r",encoding="utf-8");
data=f.readline(10);
data1=f.readline(10);
print(data);
print(data1);
执行结果以下:
说
给本身听
#使用readlines()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readlines(); print(data);
执行结果以下:
['\ufeff\t\t\t\t\t\t\t\t说给本身听\n', '\t\t\t\t\t\t\t\t---三毛\n', '若是有来生,\n', '要作一棵树,\n', '站成永恒,\n', '没有悲欢的姿式,\n', '一半在土里安详,\n', '一半在风里张扬,\n', '一半洒落阴凉,\n', '一半沐浴阳光,\n', '很是沉默很是骄傲,\n', '从不依靠,从不寻找。']
#使用readlines(size)方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readlines(1); data1=f.readline(2); data2=f.readlines(3); print(data); print(data1); print(data2);
执行结果以下:
['\ufeff\t\t\t\t\t\t\t\t说给本身听\n']
['\t\t\t\t\t\t---三毛\n']
发现readlines(size)这个方法的运行结果和咱们的预期不太同样。
这是因为存在IO缓冲区,缓冲区的大小为:8192.
#使用迭代器读取文件
f=open("E://ME.txt","r",encoding="utf-8"); iter_f=iter(f);#把文件对象转为迭代器对象 for i in iter_f: print(i,end="");
执行结果为:
说给本身听
---三毛
若是有来生,
要作一棵树,
站成永恒,
没有悲欢的姿式,
一半在土里安详,
一半在风里张扬,
一半洒落阴凉,
一半沐浴阳光,
很是沉默很是骄傲,
从不依靠,从不寻找。
使用read()/readline()/readlines()会把文件整个加载到内存中去,极大的浪费内存,咱们采用迭代器的方式能够节约内存。
3、文件写入
write(str):将字符串写入文件
writelines(strings):将多行写到文件
#使用write()方法
f=open("E://ME.txt","a+",encoding="utf-8"); data="\n\n梦想,能够天花乱坠"; f.write(data);
此时,其实只是对内存中的数据进行了修改,磁盘中的数据并无被修改。只有调动flush()/close()方法,修改后的数据才会写入磁盘。
使用writelines()方法;
f=open("E://ME.txt","a+",encoding="utf-8"); data1=[ "心,若没有栖息的地方,到哪里都是流浪", "飞蛾扑火时,必是极快乐幸福的", "今日的事情,尽心、尽意、尽力去作了,不管成绩如何,都应该高高兴兴地在床上恬睡。" ] f.writelines(data1);
f.close()
此时,其实只是对内存中的数据进行了修改,磁盘中的数据并无被修改。只有调动flush()/close()方法,修改后的数据才会写入磁盘。
python写磁盘时机
1.主动调用close()/flush()方法,写缓存同步到磁盘
2。写入数据量大于等于写缓存,写缓存同步到磁盘
4、文件指针
文件指针操做:
seek(offset,[whence])
offset:偏移量,能够为负数
whence:偏移至关位置,其取值有如下三个:
一、os.SEEK_SET:相对文件起始位置
二、os.SEEK_CUR:相对文件当前位置
三、os.SEEK_END:相对文件结束位置
tell():tell函数的做用是显示当前指针位置
import os; f=open("E://ME.txt","r+",encoding="utf-8"); f.read(3); print(f.tell()); f.seek(0,os.SEEK_SET) print(f.tell());
执行结果为:
5
3
使用seek()函数,咱们能够定义到文件的任意一个位置。
5、文件关闭
为何要关闭文件?
1.将写缓存同步到磁盘
二、linux系统中,每一个进程打开文件的个数是有限制的,若是超过了系统限制,再打开文件就会失败。
关闭文件,其实就是调用close()函数。