python 文件操作
文件打开方式(mode):
r:打开一个文件只用于读,默认打开方式
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
a:打开一个文件用于追加,文件如果存在,文件指针将会放在文件末尾,也就是说新的内容将会被写在已有内容之后
a+:追加方式打开
w:打开一个文件只用于写
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
文件打开
open(name[,mode[buf]])
name 文件名
mode 打开方式
buf 缓冲buffering大小
文件读操作
read([size]):读取文件,(读取size字节,默认读取)
readlize([size]):读取一行
如果读取的一行的长度len(line)>size 则返回size大小,如果len(line)<size ,则返回len(line)
readlines([size]):读取完文件,返回每一行所组成的列表
readlines的size是指每次读缓冲区相接近的大小字节的文件,返回每行组成的列表,可以通过io模块查看buf大小
使用迭代去读取文件iter
In [10]: f = open("luffy.txt")
In [11]: iter_f = iter(f)
In [12]: lines = 0
In [13]: for line in iter_f:
....: lines += 1
....: print(line)
....:
http://luffy.oldboyedu.com/
http://luffy.oldboyedu.com/
......
文件写操作
write(str):将字符写入到文件
In [15]: f = open("luffy.txt",'w')
In [16]: f.write('luffy.oldboyedu.com')
In [17]: f.close()
In [18]: cat luffy.txt
luffy.oldboyedu.com
writelines():写多行到文件
In [19]: f = open('luffy.txt','w')
In [20]: f.writelines('123456')
In [21]: f.writelines(('python','php','java','go'))
In [22]: f.close()
In [23]: cat luffy.txt
123456pythonphpjavago
python 写文件机制,在写文件是,如果没有超过缓冲区大小,数据将不会写到硬盘,如果想在写的时候直接写入磁盘,需要调用f.close()或者f.flush()方法
文件关闭
将写缓存同步到磁盘
linux系统中每个进程打开文件的个数是有限的
如果打开文件数到了系统限制,在打开文件就会失败
文件指针
· 操作文件指针可以通过seek方法:
seek(offset, whence):移动文件指针
offset:偏移量,可为负数
whence:偏移相对位置
偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
os.SEEK_SET:表示文件的相对起始位置
os.SEEK_CUR:表示文件的相对当前位置
os.SEEK_END:表示文件的相对结束位置
f.tell() 查看文件指针位置
f.seek() 移动文件指针位置
In [24]: f = open("luffy.txt",'r')
In [25]: f.read(3)
Out[25]: '123'
In [26]: f.tell()
Out[26]: 3
In [27]: f.seek(0,os.SEEk_SET)
文件属性