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

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

  • 相关阅读:
    HashMap按键排序和按值排序
    LeetCode 91. Decode Ways
    LeetCode 459. Repeated Substring Pattern
    JVM
    LeetCode 385. Mini Parse
    LeetCode 319. Bulb Switcher
    LeetCode 343. Integer Break
    LeetCode 397. Integer Replacement
    LeetCode 3. Longest Substring Without Repeating Characters
    linux-网络数据包抓取-tcpdump
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480285.html
Copyright © 2011-2022 走看看