1.文件打开
1.1.文件打开方法
open(name[,mode[,buff]] ->file
name--文件路径
mode--打开方式
buff--缓冲buffer的大小
file--返回file类型的对象
重要:必须要写close()方法
1.2文件打开方式
另:
打开二进制文件(如图片)时,需使用如下方式
‘rb‘、‘wb‘、‘ab‘、‘rb+‘、‘wb+‘、‘ab+‘
2.文件读取
2.1文件读取方法
read([size])
读取size个字节,默认 读取全部。
如果size小于等于文件字节数,则返回size大小的内容,且游标在读取完之后的位置。
readline([size])
读取从当前游标算起的一行。
如果size小于当前行的字节数,则返回size大小的内容,且游标在读取完之后的位置。
readlines([size])
一次性读取完文件,返回由每一行组成的list
注意:
size其实是无用的,返回的list长度不由它决定,而是由io模块化总的io.DEFAULT_BUFFER_SIZE决定,而且不是size=3就读取3个io.DEFAULT_BUFFER_SIZE字节大小的内容
实际上不是一次性读取完文件,只是读取io.DEFAULT_BUFFER_SIZE个字节大小(如8192)的内容,然后返回由比8192稍大或相等的字节大小的内容(保证list[-1]是完整一行)所组成的列表。
iter
使用迭代器按行读取文件(推荐方法)
不受io.DEFAULT_BUFFER_SIZE的限制
>>> f=open("helloworld.py")
>>> iter_f=iter(f)
>>> line=0
>>> for i in iter_f:
... line+=1
...
>>> line
4
3.文件写入
3.1文件写入方法
write(str)
将字符串写入文件
writelines(sequence_of_strings)
提供一个str或由str组成的迭代器,将每个str相连写入文件中
注:必须是有字符串所组成的序列,否则会报错
3.2linux写缓存
4.文件关闭
4.1为什么要关闭文件?
将缓存在内存中的文件写入到磁盘
linux中,每个进程能打开的文件数是有限的,如果超过这个限制,那么打开文件就会失败。
注:
查看某进程的限制
cat /proc/${pid}/limits
linux进程打开文件数限制
http://www.cnblogs.com/aka-blog/articles/filemax.html
4.2file.fileno()
文件描述符,用来描述当前文件被打开(未关闭)多少次。
如果超过限制,则会报错IO Error:Too many open files: ‘xx‘
5.文件指针
5.1seek()函数
移动文件指针
seek(offset[, whence]) -> None
offset--偏移量,可以为负数
whence--偏移相对位置。
可以使用0,1,2;
也可以使用OS模块的宏定义
os.SEEK_SET(文件起始位置0)
os.SEEK_CUR(文件当前位置1)
os.SEEK_END(文件结束位置2)
5.2举例
>>> f=open(‘helloworld.py‘,‘r+‘)
>>> c=f.read()
>>> c
‘helloword123\nhelloword456\nhelloword789‘
>>> f.seek(0,os.SEEK_SET)
>>> f.write(‘helloppt‘)
>>> f.seek(0,os.SEEK_SET)
>>> c=f.read()
>>> c
‘hellopptd123\nhelloword456\nhelloword789‘
>>> f.close()