Python文件处理

  • Python文件概念
    文件:Python中文件是对象;
    Linux文件:一切设备都可以看成文件,如磁盘文件、管道、网络Socket、外设等。
    文件属性:用户,读、写、执行权限;
  • Python文件打开
    文件打开方法:open(name[,mode[buf]])
    name:文件路径
    mode:打开方式
    buf:缓冲buffering大小
  • Python读取方式
    文件读取方法:
    read([size]):读取文件(读取size个字节,默认读取全部)
    readline([size]):读取一行
    readlines([size]):读取完文件,返回每一行所组成的列表
    iter:使用迭代器读取文件
  • Python写入方式
    文件写入方法:
    write(str):将字符串写入文件
    writelines(sequence_of_strings):写多行到文件
    文件写过程如下图:

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

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

  • Python文件打开方式
    python文件打开方式如下:
    1)”r”:只读方式打开,文件必须存在;
    2)”w”:只写方式打开,文件不存在创建文件,文件存在则清空文件内容
    3)”a”:追加方式打开,文件不存在创建文件
    4)”r+”或”w+”:读写方式打开
    5)”a+”:追加和读写方式打开
    6)”rb”,”wb”,”ab”,”rb+”,”wb+”,”ab+”:二进制方式打开
  • Python文件关闭
    为什么需要关闭:
    1)将写缓存同步到磁盘;
    2)Linux系统中每个进程打开文件的个数是有限的;
    3)如果打开文件数到了系统限制,在打开文件就会失败
  • Python文件指针
    1)写入文件后,必须打开才能读取写入内容
    2)读取文件后,无法重新再次读取读过的内容
    文件读取写入文件指针移动过程如下图:

Python文件指针操作:

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

offset:偏移量,可以为负数;

whence:偏移相对位置;

Python文件指针定位方式:

os.SEEK_SET:相对文件起始位置;值(0)

os.SEEK_CUR:相对文件当前位置;值(1)

os.SEEK_END:相对文件结尾位置;值(2)

tell()函数返回文件当前的偏移

  • Python文件对象属性
    file.fileno():文件描述符;
    file.mode():文件打开权限;
    file.encoding():文件编码格式;
    file.closed()文件是否关闭;
  • Python标准文件
    文件标准输入:sys.stdin;
    文件标准输出:sys.stdout;
    文件标准错误:sys.stderr;
  • Python文件命令行参数
    sys模块提供sys.argv属性,通过该属性可以得到命令行参数;
    sys.argv:字符串组成的列表
  • Python文件编码格式
    创建一个utf-8或者其他编码格式的文件方法:
    使用codecs模块提供方法创建指定编码格式文件
    open(fname,mode,encoding,errors,buffering):使用指定编码格式打开文件
  • Linux文件系统
    文件包括:磁盘(ext2,ext4)文件,NFS文件系统,各种外设(sd卡,USB设备)等;
    Linux文件系统示意图如下:

Python对文件操作的流程分析图如下:

  • OS模块对文件和目录操作
    os.open(filename,flag [,mode]):打开文件
    flag:打开文件方式
    os.O_CREAT:创建文件
    os.ORDONLY:只读方式打开
    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):判断改文件权限:F_OK存在,权限: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模块方法:
    exists(path):当前路径是否存在
    isdir(s):是否是一个目录
    isfile(path):是否是一个文件
    getsize(filename):返回文件大小
    dirname(p):返回路径的目录
    basename(p):返回路径的文件名