Python操作文件

本文详细介绍了Python中文件操作的方法,包括文件的打开、读取、写入及关闭等基本操作,同时还探讨了文件指针的操作及缓存同步等问题。

#########python 文件概念
文件:python中文件就是对象
linux文件:一切设备都是文件
文件属性:用户,读,写,执行权限

#########打开文件
文件打开方式:open(name[,mode[buf]])
name:路径
mode:打开方式
buf:缓存buffering大小

打开方式:
'r' 只读打开         文件须存在
'w' 只写方式打开     文件不存在就创建文件,存在则清空文件内容
'a' 追加方式打开     文件不存在就创建文件 
'r+'/'w+'  读写方式打开
'a+'       追加和读写方式打开
'rb','wb','ab','rb+','wb+','ab':二进制方式打开


读取方式:
read([size]):读取文件(读取size个字节,默认读取全部)
readline([size]):读取一行
readlines([size]):缓存大小的文件,返回每一行锁组成的列表
iter():使用迭代器读完文件

写入方式:
write(str):将字符串写入文件
writelines(sequence_of_strings):写多行到文件,参数可以使迭代的对象

必须要调用close()数据才会写入磁盘文件

解决写缓存和磁盘文件不一致的问题?
1.主动调用close()或者flash()方法,写缓存同步到磁盘
2.写入数据量大于或者等于写缓存时,写缓存才会同步到磁盘

文件的关闭
1.将缓存同步到磁盘
2.linux系统中每个进程打开文件的个数是有限的;
3.如果打开文件数到了系统限制,再打开文件就会失败

写入和读取的问题
1.写入文件后,必须打开才能读取写入内容
2.读取文件后,无法重现再次读取读过得内容

写入和读取位置问题
文件读写时,指针移动过程
open打开文件的时候,文件指针指向文件的起始位置,read(size)后,往后移动size个位置
write('string')后,往后移动len(string)个长度。

Python对文件指针操作
seek(offset[,whence]):移动文件指针
offset:偏移量,可以为负数
whence:偏移相对位置

文件定位方式:seek(偏移量,参数),三个参数如下:
os.SEEK_SET:相对文件的起始位置
os.SEEK_CUR:相对文件当前位置
os.SEEK_END:相对文件结尾位置
tell()查看文件当前位置


############文件对象的属性
file.fileno():文件描述符
file.mode:文件打开权限
file.encoding:文件编码格式
file.closed:文件是否关闭


#############标准文件:是一个文件对象
标准输入:sys.stdin 
标准输出:sys.stdout
标准错误:sys.stderr


#############命令行参数
sys模块提供sys.argv属性,通过该属性可以得到命令行参数;
sys.argv:字符串组成的列表

########文件编码方式
1. 可以先将先将unicode编码方式的编码方式改为utf8,然后再写入文件
a=unicode.encodde(u'哈哈','utf-8')
f.write(a)

2. 如何创建指定编码方式的文件
使用codecs模块提供的方法创建指定编码格式的文件
codecs.open(fname,mode,encoding,errors,buffering):用指定编码方式打开文件


########使用OS模块打开文件
os.open(filename,flag[,mode]):打开文件
flag:打开文件方式
    os.O_CREAT:创建文件
    os.O_RDONLY:只读方式打开
    os.O_WRONLY:只写方式打开 
    os.O_RDWR:读写方式打卡
    
os.read(fd,buffersize):读取文件
os.write(fd,string):写入文件
os.lseek(fd,pos,how):文件指针操作
os.close(fd):关闭文件

#########os模块方法
access(path,mode):判断文件权限。权限R_OK,W_OK,X_OK
listdir(path):返回当前目录下所有文件组成的列表
remove(path):删除文件
rename(old,new):修改文件或者目录名
mkdir(path[,mode]):创建目录
makedirs(path[,mode]):创建多级目录
removedirs(path):删除多级目录
rmdir(path):删除目录(必须是空目录)

######os.path()方法,写缓存同步到磁盘
os.path.exists():判断当前路径是否存在
os.path.isfile():是否是一个目录
os.path.getsize():返回文件大小
os.path.basename():返回路径
os.path.dirname():返回路径的文件名

转载于:https://my.oschina.net/zhouwang93/blog/1788781

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值