python文件处理
2016-05-11 17:11
295 查看
一、python文件操作基础
文件:python中文件是对象。文件属性:用户、读、写、执行权限。
1、文件的打开方式
文件打开方法:
open(name,mode,buf)
name:文件路径
mode:打开方式
buf:设置读写文件缓冲大小
f=open("hello.txt") print dir(f)
可以看到文件类的方法如下:
下面来看看文件的具体打开方式:
如果以普通方式打开,则是以文本的方式打开,读取的时候不能读取到正确内容,而用二进制方式打开就可以根据某些信息(比如图片的头信息)得到正确内容。
2、文件的读取方式
python读取文件方式:
<span style="font-family:Microsoft YaHei;font-size:14px;">read(size)#读取文件,读取size个字节,默认读取全部 如果没有设置 则全部读完 readline(size)#读取一行前size个字节,如果不设置则读取一行,就只读取一行 readlines()#读缓冲buffer左右个字节,返回每一行所组成的列表</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">f=open("hello.txt") print f.read()</span>就可以显示出文件中的内容。
那么对于最后一个这个buffer是多少呢,help(f.readlines)一下:
<span style="font-family:Microsoft YaHei;font-size:14px;">import io print io.DEFAULT_BUFFER_SIZE</span>
显示的结果是8192,也就是每次就读取与这个缓冲大小想接近的字节数,与设置的size大小无关。
<span style="font-family:Microsoft YaHei;font-size:14px;">f=open("hello.txt") print f.readline() print f.readline(2) </span>
那有没有办法将文件全部读完呢?有:
iter:使用迭代器读取文件
<span style="font-family:Microsoft YaHei;font-size:14px;">f=open("hello.txt") iter_f=iter(f) lines=0 for line in iter_f: lines+=1 print lines</span>上面代码显示出文件中的总行数。
3、文件的写入方式
write(str)#将字符串写入到文件
writelines(sequences_of_strings)#写多行到文件,参数可为迭代的对象:可以是字符串,也可以是字符串组成的元组,也可以是字符串组成的迭代器或字符串组成的列表
<span style="font-family:Microsoft YaHei;font-size:14px;">f=open('testwrite.txt','w') f.write('test1') f.writelines('test2') f.writelines(('1','2','3')) f.writelines(['1','2','3']) f.close() </span>
要注意的是:
1)、主动调用close()或者flush()方法,写缓存同步到磁盘。
2)、写入数据量大于或者等于写缓存,写缓存会自动同步到磁盘。
4、文件指针
python写入和读入问题:
1)写入文件后,必须打开才能读取写入内容。
2)读取文件后,无法再次读取读过的内容。
文件指针的移动过程:
可见文件指针是无法回朔的,那么如何操作文件指针呢?
文件指针操作函数:
<span style="font-family:Microsoft YaHei;font-size:14px;">seek(offset,whence)</span>offset:偏移量,可以为负数
whence:偏移相对位置,有下面三种:
os.SEEK_SET:相对文件起始位置,值为0
os.SEEK_CUR:相对文件当前位置,值为1
os.SEEK_END:相对文件结尾位置,值为2
<span style="font-family:Microsoft YaHei;font-size:14px;">f=open('hello.txt','r') import os print f.tell() print f.read(3) print f.tell() f.seek(0,os.SEEK_SET) print f.tell() f.seek(0,os.SEEK_END) print f.tell() f.seek(-5,os.SEEK_CUR) print f.tell() print f.read() print f.tell() f.seek(0,os.SEEK_END) f.seek(-67,os.SEEK_CUR) </span>
可见,文件的偏移量不能超过文件长度,否则会报错。
相关文章推荐
- 1.python基础学习__函数中的参数
- import CSV data into MySQL via PyMySQL in Python 3.3
- pyhon基础(一)
- python内建函数及属性
- leetcode(5),Valid Anagram(python)
- python 爬虫
- python 异步IO
- python 协程
- Python os.stat() 方法
- Python Web 开发的十个框架【转载】
- 用Python做自然语言处理必知的八个工具【转载】
- python encode和decode函数说明
- python包sk-learn中的随机森林
- python(二)列表,元组,循环
- python(一)变量,常量,编码,数据类型
- liunx 系统中单引号、 双引号、反引号、犯斜杠的区别
- Python学习笔记(十一)
- Python内嵌列表格式化
- Python黑客编程2 入门demo--zip暴力破解
- python定时替换文件内容