Python文件处理
2015-12-18 09:50
666 查看
Python文件处理
文件简介
1.简介文件:Python中文件是对象
LINUX文件:一切设备都可以看成文件,如磁盘文件、管道、网络socket、外设等
文件属性:用户,读写执行权限
2.Python文件基础操作
2.1文件打开方式打开方法:open(name[,mode[buf]])
name:文件路径
mode:打开方式
Mode | 说明 | 注意 |
r | 只读方式打开 | 文件必须存在 |
w | 只写方式打开 | 文件不存在就创建 文件存在则清空文件内容 |
a | 追加方式打开 | 文件不存在则创建 |
r+/w+ | 读写方式打开 | |
a+ | 追加和读写方式打开 | |
rb、wb、ab、rb+、wb+、ab+:二进制方式打开 |
buf:缓冲buffering大小
返回值:文件对象,有如下方法:
2.2文件读取方式
读取方式:
1)read([size]):读取文件(读取size个字节,若文件大小大于size则读取size,若文件小于size则读完,默认读取全部)
2)readline([size]):读取一行,size同上
3)readlines([size]):读取io.default_bufer_size左右文件,返回每一行所组成的列表,弊端是文件很大,就会占用很大空间
此时的size,是 在io.default_bufer_size.设置的值左右大小的内容
如果要读取整个文件则用迭代器方式,iter:并不是把整个文件都放在内存中,而是在每次for的时候去读取。
2.3文件写入与写缓存
文件写入方式:
1)write(str):将字符串写入文件
2)writelines(sequence_of_strings):写多行到文件,参数为可迭代的对象,可以是字符串,字符串组成的元组,字符串组成的迭代器,字符串组成的列表
注意:写入的时候因为linux有写缓存机制,所以如果不调用close或者flush是不会写到磁盘上去的
写不一致问题的解决方法:
1.主动调用close或者flush方法,写缓存同步到磁盘;
2.写入数据量大于或者等于写缓存,写缓存同步到磁盘,但是size-bufer的那部分还是不会同步过去的
2.4文件关闭
1,将缓存同步到磁盘
2.linux系统中每个进程打开文件的个数是有限的
3.如果打开文件数到了系统限制,再打开文件就会失败
举例:
1)查看当前的进程
2)看一下进程打开文件的限制在哪儿
3)查看
fileno:指文件的描述符,每打开一个文件,其fileno就会累加
列表保存文件对象
2.5文件指针
文件读取写入存在的问题:
1.写入文件后,必须打开才能读取写入的内容
2.读取文件后,无法重新再次读取读过的内容
文件读取的过程:
如何对文件指针进行操作呢?使用seek
seek(offset[,whence]):移动文件指针:
offset:偏移量,可以为负数
whence:偏移相对位置
os.SEEK_SET:相对文件起始位置 0
os.SEEK_CUR:相对文件当前位置 1
os.SEEK_END:相对文件结尾位置 2
f.tail()返回文件当前的偏移
f.seek(0,os.SEEK_END):将文件指针定位到文件结尾
f.seek(-5,0s.SEEK_CUR):相对于当前位置之前的5个字节
如果文件的偏移大于文件的长度:就会返回Invalid argument:的错误
s.seek(-18,os.SEEK_CUR):
就会返回Invalidargument:的错误
3.文件属性及OS模块使用
3.1文件属性编码格式
普通文件属性:
file.fileno():文件描述符
file.mode:文件打开权限
file.encoding:文件编码格式,返回值若为空则为ASC码格式
file.closed:文件是否关闭
执行以上函数前必须要先打开文件
标准文件:
标准输入文件:sys.stdin
标准输出文件:sys.stdout
标准错误文件:sys.stderr
调用的时候要首先导入sys模块
文件命令行参数:执行程序时,如果能根据参数不同完成不同功能
sys模块提供sys.argv属性,通过该属性可以得到命令行参数;
sys.argv:字符串列表,可以接收n个参数
文件的编码格式:
使用普通的方式打开文件:写入u“慕课”,出现的问题
解决办法:先将Unicode转换为utf-8
如何创建一个utf-8后者其他编码格式的文件呢?
使用codecs模块提供方法创建指定编码格式文件:
open(fname.mode,encoding,errors,buffering):默认是rb方式打开
使用:首先要引入模块
3.2Linux文件系统简介
Linux文件包括:磁盘(ext2,ext4)文件,NFS文件系统,各种外设(sd卡,USB设备)
Linux是如何来管理外设,为应用层提供统一接口,管理接口?
3.3OS模块对文件和目录操作
OS提供的模块更加偏向于Linux系统调用
1)打开文件:
os.open(filename,flag[,mode])
flag:打开文件的方式 os.O_CREAT 创建文件
os.O_RDONLY只读方式打开
os.O_WRONLY只写方式打开
os.O_RDWR 读写方式打开
2)读取文件:os.read(fd,buffersize)
3) 写入文件:os.write(fd,string)
4) 文件指针操作:os.lseek(fd,pos,how)
5) 关闭文件:os.close(fd)
调用之前要首先import os
OS下的其他方法
OS方法 | 说明 |
access(path,mode) | 判断文件权限:F_OK存在, 权限:R_OK W_OK X_OK |
listdir(path) | 返回当前目录下所有文件组成的列表 |
remove(path) | 删除文件 |
rename(old,new) | 修改文件或者目录名 |
mkdir(path,[mode]) | 创建目录 |
makedirs(path,[mode]) | 创建多级目录 |
removedirs(path) | 删除多级目录 |
rmdir(dir) | 删除目录(目录必须空目录) |
OS.path模块方法
os.path方法 | 说明 |
exits(path) | 当前路径是否存在 |
isdir(s) | 是否是一个目录 |
isfile(path) | 是否是一个文件 |
getsize(filename) | 返回文件大小 |
dirname(p) | 返回路径的目录 |
basename(p) | 返回路径的文件名 |
4.文件练习
内容:使用python管理ini文件:实现查询,添加,删除,保存目的:1.掌握文件基本操作 2.认识ini文件 3.了解ConfigParser模块
ini配置文件格式:方便快速的查看某个选项里的某个条目的值
节:[session]
参数(键=值) :name=value
例子: [port]
port1=8000
port2=8001
使用的时候要先导入ConfigParser
read方法是读入一个文件,即加载
sections:返回所有的section的name
item就可以将所有的内容dump出来
set:可以对item修改,也可以插入一个条目
remove_option:删除一个条目
remove_section:删除一个section
练习:写一个脚本来管理ini文件
相关文章推荐
- 频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
- python学习记录(1)基础内容
- Python包安装——mayavi安装
- Python 脚本分析(ftp上传文件、获取本地时间)
- 从Theano到Lasagne:基于Python的深度学习的框架和库
- [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
- [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
- [Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈
- [python爬虫] Selenium定向爬取虎扑篮球海量精美图片
- [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍
- 使用Python编写简单的端口扫描器的实例分享
- tarfile模块之addfile方法
- 【Python 第12课】 for循环
- 看书 Python 源码分析笔记 (一) 对象初探
- 看书 Python 源码分析笔记 (二)
- Python爬虫:模拟登录带验证码网站