zoukankan      html  css  js  c++  java
  • [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容

    第七章 Python文件操作

    文本文件

    文本文件存储的是常规字符串,通常每行以换行符’ ’结尾。

    二进制文件

    二进制文件把对象内容以字节串(bytes)进行存储,无法用笔记本或其他普通文本处理软件进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取,显示,修改或执行。常见的如图形图像文件,音视频文件,可执行文件,资源文件,各种数据库,Office文件都属于二进制文件

    文件对象

    通过open()函数即可以指定模式打开指定文件并创建文件对象

    文件对象名=open(文件名[,打开方式[,缓冲区])
    

    文件对象常用属性

    文件打开模式

    r

    读模式

    w

    写模式

    a

    (append)追加模式

    b

    (bite)二进制模式(可与其他模式组合使用,用+号连接)

    +

    读、写模式(可与其他模式组合使用,用+号连接)

    文件对象属性

    close

    判断文件是否关闭

    mode

    返回文件的打开模式

    name

    返回文件的名称

    文件对象常用方法

    flush()

    把缓冲区的内容写入文件,但不关闭文件

    close()

    把缓冲区的内容写入文件,同时关闭文件,并释放文件对象

    read(size)

    从文件中读取size个字节(Py2.X)或字符(Py3.x)的内容作为结果返回,如果省略size,则一次性读取所有内容

    readline()

    从文本文件中读取一行内容,(如果结尾有 则包括 ),作为结果返回

    readlines()

    把文本文件的每行内容作为一个字符串存入列表中,返回该列表

    seek(offset[,whence])

    把文件指针移动到新的位置,offset表示相对于whence的位置,whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0

    tell()

    返回文件指针的当前位置

    truncate([size])

    删除从当前指针位置到文件末尾的内容。如果指定了size,则不论指针在什么位置都留下钱size个字节,其余的删除

    write(s)

    把字符串s的内容写入文件

    writelines(s)

    把字符串列表写入文本文件

    上下文管理关键字with

    无论何种原因跳出with块,总能保证文件被正确关闭。并且可以在代码块执行完毕后自动还原进入该代码块的现场

    s="Hello World"
    with open('a.txt','a+') as f:
        f.write(s)
    

    二进制文件操作

    pickle模块

    pickle是较为常用并且速度非常快的二进制文件序列化模块
    使用pickle模块写入二进制文件
    .dump(变量名,文件)

    import pickle
    
    f=open('sample_pickle..data','wb')
    n=7
    i=13000000
    a=99.056
    s='中国人民 123abc'
    lst=[[1,2,3],[4,5,6],[7,8,9]]
    tu=(-5,10,8)
    coll={4,5,6}
    dic={'a':'apple','b':'banana','g':'grape','o':'orange'}
    try:
        pickle.dump(n,f)        #表示后面将要写入的数据个数
        pickle.dump(i,f)
        pickle.dump(a,f)
        pickle.dump(s,f)
        pickle.dump(lst,f)
        pickle.dump(tu,f)
        pickle.dump(coll,f)
        pickle.dump(dic,f)
    except :
        print("文件一场")
    finally:
        f.close()
    

    .load(文件名)

    依旧为之前的变量类型

    import pickle
    
    f=open('sample_pickle..data','rb')
    n=pickle.load(f)
    i=0
    while i<n:
        x=pickle.load(f)
        print(x)
        i+=1
    f.close()
    

    struct模块

    struct 也是比较常用的对象序列化和二进制文件读写模块

    使用struct模块写入二进制文件
    import struct

    n=13000000
    b=True
    s='ddd'
    sn=struct.pack('if?',n,b,s) #把n,b,s全部转为字符串
    f=open('1.dat',"wb")
    f.write(sn)
    f.close()
    

    使用struct 模块读取
    import struct

    f=open('1.dat',"rb")
    sn=f.read()
    Tu=struct.unpack('if?',sn)
    print(Tu)
    #(13000000, 1.0, True)
    n=Tu[0]
    x=Tu[1]
    b=Tu[2]
    f.close()
    

    文件级操作

    如果需要处理文件路径,需要使用os.path模块

    如果需要使用命令行读取文件内容可以使用fileinput模块

    创建临时文件和文件夹可以使用tempfile模块

    os与os.path模块

    os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件级操作的方法。

    os.path模块提供了大量用于路径判断,切分,连接,以及文件夹遍历的方法

    os模块常用文件操作方法

    • access(path,mode)

      按照mode指定的权限访问文件

    • open(path,flags,mode=0o777,*,dir_fd=None)

      按照mode指定的权限打开文件,默认权限为可读,可写,可执行

    • chmod(path,mode,*,dir_fd=None,follow_symlinks=True)

      改变文件的访问权限

    • remove(path)

      删除指定文件

    • rename(src,dst)

      重命名文件或目录

    • stat(path)

      返回文件的所有属性

    • fstat(path)

      返回打开的文件所有属性

    -listdir(path)

    返回Path目录下的文件和目录列表

    -startfile(filepath[,operation])

    使用关联的应用程序打开指定的文件

    os.path模块

    -abspath(path)

    返回绝对路径

    -dirname(path)

    返回目录的路径

    -exists(path)

    判断文件是否存在

    -getatime(filename) getctime(filename) getmtile(filename)

    返回文件的最后访问时间,创建时间,最后修改时间

    -getsize

    返回文件的大小

    -isabs(path) isdir(path) isfile(path)

    判断path是否为 绝对路径 目录 文件

    -join(path,*paths)

    连接两个路径

    -split(path)

    对路径进行分割,以列表形式返回

    -splitext(path)

    从路径中分割文件的扩展名

    -splitdrive(path)

    从路径中分割驱动器的名称

    -walk(top,func,arg)

    遍历目录

    shutil模块

    shutil模块也提供了大量的方法支持文件和文件夹的操作,详细的方法列表可以使用dir(shutil)进行查看 复制,压缩,解压等

    目录操作

    os和os.path还提供了大量的目录操作方法,os模块常用目录操作方法也成员如图所示,可以通过dir(os.path)查看。

    • mkdir(path[,mode=0777])

      创建目录

    • makedirs(path1/path2…,mode=511)

      创建多级目录

    -rmdir(path)

    删除目录

    -removedirs(path1/path2)

    删除多级目录

    -getcwd()

    返回当前工作目录

    -get_exec_path()

    返回可执行文件的搜索路径

    -chdir(path)

    把path设为当前工作有目录

    -walk(top,topdown=True,onerror=None)

    遍历目录书,该方法返回一个元组,包货三个元素。所有路径名,所有目录列表与文件列表

    -sep

    当前操作系统所使用的路径分隔符

    -extsep

    当前操作系统所使用的文件扩展名分隔符

  • 相关阅读:
    正则表达式30分钟入门教程
    Python的神奇方法指南
    Python 2.7教程
    javaweb开发.常用的第三方包
    javaweb开发.页面中文乱码问题
    javaweb开发.eclipse使用小常识
    javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册
    ionic3使用第三方图标
    json-server使用及路由配置
    javaweb开发2.新建一个javaweb项目
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480285.html
Copyright © 2011-2022 走看看