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模块对路径的操作

 

 

 

 

 

 

 

 

 

 

posted on 2019-12-01 18:32  anne199534  阅读(506)  评论(0编辑  收藏  举报