Python文件处理

来源:互联网 发布:淘宝助手上传失败 编辑:程序博客网 时间:2024/06/17 03:18

(一)python文件基础操作

大概内容:文件概念,文件打开方式,文件读写操作,文件指针,文件对象属性,os模块文件操作

文件:python中文件是对象

Linux文件:一切设备都可以看成文件

例如:磁盘文件,管道,网络Socket,外设等

文件属性:用户,读,写,执行权限。

1.1 python文件操作之文件打开方式

文件打开:open(name[,mode[buf]])

name:文件路径

mode:打开方式

buf:缓冲buffering大小

文件读取方式:

read([size]):读取文件(读取size个文件,默认读取全部),当文件大于设置的size则只读取size个,否则读取全部。

readline([size]):读取一行

readlines([size]):读取完文件,返回每一行所组成的列表

文件写入方式:

write(str):将字符串写入文件

writelines(sequence_of_strings):写多行到文件(sequence_of_strings是一个由字符串组成的list)

python文件打开方式

mode 说明注意

'r' 只读方式打开文件必须存在

'w' 只写方式打开文件不存在创建,文件存在则清空文件内容

'a' 追加方式打开文件不存在创建文件

'r+'/'w+' 读写方式打开  'w+'同样会清空之前的文件

'a+' 追加和读写方式打开

'rb','wb','ab','rb+','wb+','ab+':二进制方式打开


1.2文件读取方式

read([size]):读取文件(读取size个文件,默认读取全部)

readline([size]):读取一行

readlines([size]):读取完文件,返回每一行所组成的列表

iter:使用迭代器读取文件


注意:在使用readline时,当内容大于size大小读取size大小内容,下次再读取时接着上次读取,否则返回全部数据。

在使用readlines时,size大小并不是指能够取得的文件大小,起作用的是io.DEFAULT_BUFFER_SIZE(8192)缓冲区的大小(黑人问号)

栗子:

f=open("111.txt")iter_f =iter(f)lines=0for line in iter_f:    lines+=1print(lines)

1.3 python文件写入方式

write(str):将字符串写入文件

writelines(sequence_of_strings):写多行到文件,参数为可迭代的对象(字符串,或字符串组成的元组等)

注意:当我们没有关闭文件时,我们写的数据是没有写进文件的

python写过程与存在问题

写文件过程:

f.write('imooc')被python解释器解释然后系统调用写函数,内核会将文件写到缓冲区,当关闭文件的时候内核会将文件写入到磁盘。这个过程写和存数据不同步,存在写缓存。

python写入磁盘时机:

1:主动调用close()或者flush方法,写缓存同步到磁盘

2,写入数据量大于或者等于写缓存,写缓存同步到磁盘

当写入的数据大于缓存的时候,会把满的数据写入到磁盘,当调用close()函数和flush()函数时候,剩余的数据会写入到磁盘


1.4 python文件关闭

python文件为什么要关闭

1,将写缓存同步到磁盘

2,Linux系统中每个进程打开文件的个数是有限的

3,如果打开文件数到了系统限制,再打开文件就会失败

查看进程运行打开最大文件数 cat /proc/PID/limits


1.5 python文件指针

1,写入文件后,必须打开才能读取写入内容

2,读取文件后,无法重新再次读取读过的内容

文件读取写入文件指针移动过程:


当打开文件时,指针指向第一个字节,按照读取个数依次往后推移,不会自动归零。

python文件指针操作:

seek(offset[,whence]):移动文件指针

    offset:偏移量,可以为负数

    whence:偏移相对位置

python文件指针定位方式:

os.SEEK_SET:相对文件起始位置  值为 0

os.SEEK_CUR:相对文件当前位置  值为 1

os.SEEK_END:相对文件结尾位置  值为 2

使用f.tell()获取当前指针偏移量。

在python3中想要偏移量为负值,需要以二进制方式打开文件。


(二)文件属性及OS模块使用

内容:文件对象属性,标准文件,文件命令行参数,文件编码格式

文件属性:

file.fileno():文件描述符

file.mode:文件打开权限

file.encoding:文件编码格式

file.closed:文件是否关闭


标准文件:

文件标准输入:sys.stdin

文件标准输出:sys.stdout

文件标准错误:sys.stderr

当我们使用input()时候相当于调用sys.stdin.read

当我们使用print()时候相当于调用sys.stdout.write


文件命令行参数:

sys模块提供sys.argv属性,通过该属性可以得到命令行参数

sys.argv:字符串组成的列表


文件编码格式

a=unicode.encode(u'你好','utf-8')

使用codecs模块提供方法创建指定编码格式文件

open(fname,mode,encoding,errors,buffering)使用编码格式打开文件


Linux文件系统

文件包括:磁盘(ext2,ext4)文件,NFS文件系统,各种外设(sd卡,USB设备)等


Linux如何来管理外设,为应用层通过统一接口?


linux系统简单分为系统层(应用层)和底层(内核)。硬件包括CPU,硬盘等。


首先每一个外设在内核中都有一个驱动程序,内核将这些接口虚拟封装为虚拟文件系统,每一个外设在文件系统下生成一个文件节点(即我们所说的文件),这些文件节点具有统一的操作方式,这些操作方式可以通过系统调用的方式对文件节点进行访问,这样可以把所有的外设使用文件处理。



使用os模块打开文件

os.open(filename,flag[,mode]) 打开文件

flag:打开文件方式

os.O_CREAT:创建文件

os.O_RDONLY:只读方式打开

os.O_WRONLY:只写方式打开

os.O_RDWR:读写方式打开

以上返回的是一个文件描述符

os.read(fd,buffersize):读取文件  fd是文件描述符,buffersize是读取文件大小

os.write(fd,string):写入文件  string是写入的数据

os.lseek(fd,pos,how):文件指针操作

os.close(fd):关闭文件

栗子:

fd=os.open('zlll.txt',os.O_CREAT|os.O_RDWR)

n=os.write(fd,'bfuvndj')

l=os.lseek(fd,0,os.SEEK_SET) #指针当前位置

str1=os.read(fd,5)

os.close(fd)

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) 删除多级目录  #os.removedirs('test/test1/test2/')

removedir(path) 删除一个空目录


os.path模块方法介绍

os.path方法 说明·

exists(path) 当前路径是否存在

isdir(s) 是否是一个目录

isfile(path) 是否是一个文件

getsize(filename) 返回文件大小

dirname(p) 返回路径的目录  #os.path.basename('./1.sql')

basename(p) 返回路径的文件名


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美国办新生儿护照怎么办 怀孕拉绿色大便怎么办 幼儿园孩子不爱学习怎么办 幼儿园老师管不住孩子怎么办 手机支架夹不住怎么办 画水彩没有留白液怎么办 水彩颜料脱胶了怎么办 指甲油涂到手上怎么办 抖音里没有控雨怎么办 qq视频没有特效怎么办 组长刁难员工员工怎么办 想转行没精力怎么办 桔子树无法退款怎么办 保温箱婴儿哭了怎么办 宝宝不爱吃肉泥怎么办 苹果x卡死了怎么办 苹果6手机用着卡怎么办 二个月宝宝肚子胀气怎么办 一岁半宝宝大便干结怎么办 婴儿上大便费劲怎么办 宝宝便秘半年了怎么办 1岁宝宝便秘怎么办 两个月积食了怎么办 婴儿拉青色大便怎么办 一周岁宝宝便秘怎么办 两岁宝宝内火重怎么办 一岁宝宝内火重怎么办 小孩大便有点血怎么办 一岁半宝宝拉血怎么办 宝宝八个月便秘怎么办 七个月孩子便秘怎么办 小孩肚子胀气怎么办消化不良 骨盆窄孩子卡住怎么办 孕38周便秘怎么办 孕晚期肚子发硬怎么办 小孩脸上有斑怎么办 肚子胀怎么办快速解决 肚子发撑发胀怎么办 怀孕超过40周怎么办 练琴近视了怎么办 流产之后一直怀不上怎么办