python之文件处理
一.基础操作
1.打开文件
f = open(文件路径,打开方式,编码模式) #打开文件并返回操作对象
打开方式 |
说明 | 注意 |
'r' | 只读方式 | 文件必须存在 |
'w' | 只写方式 |
文件不存在则创建文件 文件存在则清空文件 |
'a' | 追加方式 | 文件不存在创建文件 |
'r+'/'w+' | 读写方式 | |
'a+' | 追加和读写方式 |
2.读取文件
f.read() #不加参数默认读取整个文件 例如:read(1024) #读取1024个字节
f.readline() #不加参数默认读取一行
f.readlines()#读取buffer字节大小的内容 ,返回每一行所组成的列表
iter #使用迭代器读取文件,读取所有内容
例子:
iter_f = iter(f)
lines = 0
for line in iter_f :
f.read(line) #一行行读取
lines += 1
return lines #一共多少行
3.文件写入与写缓存
f.write(str) #将字符串写入文件
f.writelines(sequences_of_strings) #写多行到文件,参数为可迭代对象
注意:写之后,直接查看文件,会发现内容并没有被写到文件里,因为此时内容还在缓存中,并没有写到磁盘上
解决方法:
(1)主动调用close()或者flush方法,写缓存同步到磁盘;(2)写入数据量大于或者等于缓存,写缓存同步到磁盘
4.文件关闭
f.close()
为什么需要关闭?
(1)将写缓存同步到磁盘;(2)Linux系统中每个进程打开文件的个数是有限的;(3)如果打开文件数到了系统限制,再打开文件就会失败
5.文件指针
写入与读取的问题
(1)写入文件后,必须打开才能读取写入内容
(2)读取文件后,无法重新再次读取读过内容
文件指针移动的过程:
文件指针操作方法:
seek(偏移量,相对偏移位置)
指针定位方式:
os.SEEK_SET:相对文件起始位置 0
os.SEEK_CUR:相对文件当前位置 1
os.SEEK_END:相对文件结尾位置 2
使用例子:
f.seek(0,os.SEEK_SET) #文件指针回到起始位置
f.seek(0,os.SEEK_END) #文件指针指到文件结尾
f.seek(-5,os.SEEK_CUR) #指针从当前位置向前偏移5个位置
f.tell() #查看指针当前所指位置
二.文件属性以及OS模块使用
1.文件属性
(1)属性方法
f.fileno()#文件描述符
f.mode#文件打开权限,只读、只写、读写等
f.encoding #文件编码格式
f.closed#文件是否关闭
(2)标准文件
标准输入:sys.stdin 标准输出:sys.stdout 标准错误:sys.stderr
(3)文件命令行参数
执行程序时,可以根据参数不同完成不同功能
sys模块提供sys.argv属性,通过该属性可以得到命令行参数,sys.argv是字符串组成的列表
python a.py 参数名
2.编码格式
这篇博文讲解很详细
https://www.cnblogs.com/yyds/p/6171340.html
3.LINUX文件系统
文件包括:磁盘(ext2.ext4)文件,NFS文件系统,各种外设(sd卡,USB设备)等
4.OS模块对文件和目录操作
(1)OS模块
使用os模块打开文件
os.open(文件名,打开方式,)
打开方式:os.O_CREAT(创建文件) os.O_RDONLY(只读方式) os.O_WRONLY(只写方式) os.O_RDWR(读写方式)
使用os模块对文件进行操作
os.read(文件描述符,buffersize) #读取文件
os.write(文件描述符,string)#写入文件
os.lseek(文件描述符,pos,how) #文件指针操作
os.close(文件描述符) #关闭文件
例子
f = os.open('文件路径',os.O_CREAT|os.O_RDWR) #创建文件
n = os.write(f,'hello') #将hello写入文件
l = os.lseek(f,0,os.SEEK_SET)#返回当前指针的位置,此时l的值应该为0
str1 = os.read(f,5) #读取5个字节,此时str1为hello
os.close(f) #关闭
(2)OS模块对文件操作的方法
举例:
os.access('文件路径名称',os.F_OK) #文件存在,则返回True否则返回False
os.access('文件路径名称',os.W_OK) #文件可写,则返回True否则返回False
os.listdir('./') #显示当前文件文件目录下的所有路径
其他方法使用方法类似
(3)os模块对路径的操作