• Python进阶 文件


    Python进阶   文件

    一、预备知识

    1、文件是指储存在某种长期储存设备中的一段数据。计算机能够直接读取的以二进制类型储存的数据。文件有从能否被文本编辑软件查看分为文本文件(能)和二进制文件(不能被文本编辑器查看,但是能提供给其他软件使用)

    2、流:流是类似于文件的对象,可以支持一些文件对象的方法

    3、Python解释器自带数据结构,程序通过文件和流使得程序能够与外界交互

    4、管道字符 | ,管道字符连接多个多个命令,将一个命令的标准输出链接到下一个命令的标准输入

    5、fileinput实现延迟迭代,延迟的含义:只读取实际需要的文本部分

    6、函数open()-文件名区分大小写、read()-文件指针、f.readline()、f.readlines()、f.write()、f.writelines()、|和sys、close()、模块io中的方法:seek()-随机存取

    7、Python当中常用的文件/目录管理工作:os模块、sys模块式、fileinput模块

    8、fileinput模块:读取大文件,Readlines将占用大量内存,fileinput模块可以实现实现延迟行迭代

    import fileinput
    for line in fileinput.input(filename):
        process(line)
    

    二、文件模式

    1、打开文件,Python使用函数open函数,open函数位于自动导入的模块io

    with open("Boss直聘.txt", "a", encoding="utf-8") as file:
        file.write((gs + "," + cs + "," + gzyq + "," + str(rs) + "," + gz + "," + name + "," + detail))
        file.write("
    ")
    

    2、文件打开模式:默认模式 ‘rt’

    1、‘r’:读取模式,默认值

    2、‘w’:写入模式,写入文件,文件不存在时创建新的文件

    3、‘x’:独占写入模式,写入文件,文件存在时会引发 FileExistsErroe

    4、‘a’:附加模式,

    5、‘b’:二进制模式(与其他模式结合使用)

    6、‘t’:文本模式(默认值,与其他模式结合使用)

    7、‘+’:读写模式(与其他模式结合使用)

    8、编码策略:encoding="utf-8",Python解释器默认是是 UTF-8;编码出现错误策略:errors

    2、with语句:允许使用上下文管理器(支持两个方法的Python对象)

    1、wiht语句:Python解释器到达语句末尾时,将自动关闭文件,即是出现异常亦如此

        with open("Boss直聘.txt", "a", encoding="utf-8") as file:
            file.write((gs + "," + cs + "," + gzyq + "," + str(rs) + "," + gz + "," + name + "," + detail))
            file.write("
    ")
    

    2、、上下文管理器:支持__enter__和__exit__两种方法的对象。文件也可以作为上下文管理器,__enter__返回的是文件对象本身,方法__exit__是关闭文件。

    注:

    __enter__不接受任何参数,被调用后返回值被赋给as后面的变量

    __exit__接受三个参数,异常类型,异常对象和异常跟踪,Python解释器离开方法时调用并通过这些参数将引发的异常提供给该方法

    三、标准库:os、sys、fileinpu

    1、os模块:能够访问到多个与操作系统关系密切的变量和函数

    # os模块常用方法
      
    os.remove():  删除文件
      
    os.getcwd():  获取当前工作目录,(即当前Python脚本工作的目录路径)
    
    os.chdir('dirname'):  改变当前脚本的工作目录,相当于shell下的cd
    
    os.system('bash command'):  运行shell命令,直接显示(相当于启动一个全新的shell,然后去执行那条命令,命令执行完成过后,shell直接退出)
    
    os.curdir:  返回当前目录字符串名
    
    os.pardir:  返回当前目录的父目录的字符串名
    
    os.makedirs('dirname1/dirname2'):  可生成一个多层递归目录
    
    os.removedirs('dirname1'):  若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推
    
    os.mkdir('dirname'):  创建一个目录
    
    os.rmdir('dirname'):  删除一个目录,若目录不为空则无法删除,报错
    
    os.listdir('dirname'):  显示指定目录下,所有的文件和子目录,包括隐藏文件
    
    os.rename('oldname','newname'):  重命名文件/目录,如果新的文件名/目录名已经存在,则会报错
    
    os.stat(' path/filename'):  获取文件/目录信息,并可以获取到文件的大小
    
    os.sep:  输出操作系统特定的路径分隔符 ,如:win 为‘\’,Linux为‘/’
    
    os.liesep:  输出当前平台使用的行终止符,如 win为 ‘	
    ’,Linux为‘
    ’
    
    os.pathsep:  输出用于分割文件路径的字符串
    
    os.name:  输出字符串指示当前使用平台,如 win ->'nt' ; Linux ->'posix'
    
    os.environ:  获取操作系统的环境变量
    
    os.path.abspath(path):  返回path规范化的绝对路径
    
    os.path.split(path):   将path分割成目录和文件名二元组返回
    
    os.path.dirname(path):  返回path的目录
    
    os.path.basename(path):  返回path最后的文件名(一个绝对路径只返回最后的文件名)
    
    os.path.exists(path):  判断路径是否存在,如果path存在,返回True;如果不存在,返回Flase
    
    os.path.isabs(path):  判断是否是绝对路径,如果是,则返回True
    
    os.path.isfile(path):  判断是否是一个文件
    
    os.path.isdir(path):  判断是否是一个存在的目录
    
    os.path.join(path1[,path2[,.......]]):  将路径和文件名分为一个列表中的两个元素,将它们拼起来
    
    os.path.getatime(path):  返回path所指向的文件或者目录的最后存取时间
    
    os.path.getmtime(path):  返回path所指向的文件或者目录的最后修改时间
    
    os.popen('dir'):  相当于打开了一个临时的文件存储打开的目录(可以赋给变量,字符串的形式) 
    

    四、文本文件的编码格式

    1、ASCII码(1个字节描述一个字符,而二进制一个字节有8位,所以字符描述情况有 2^8=256种)

    2、UTF-8(一种UNICODE编码) 使用1-6个字节描述一个字符。UTF-8基本包含世界各地所有的字符,大多数汉字使用的是3个字节定义的字符。

    注:

    1、Python2解释器中默认ASCII码,所以遇见中文字符会报错。如果使用中文字符,所有在程序前面加一行注释:# *-* coding:utf8 *-*。

    2、Python2中在字符串前增加‘u’可以提醒Python解释器该字符串是以uft8编码格式。如:x = u'石斛'

    # -*- coding: UTF-8 -*-
    
  • 相关阅读:
    BootstrapValidator 解决多属性被同时校验问题《转》
    SSRS 浮动表头设置
    ToString(string format)输出格式简述
    配置AutoMapper映射规则《转》
    IE浏览器上传图片预览兼容(IE 7 8 9 10 11)
    SQL : IN 和 Exists 的区别
    BitArray简单例子
    Rx.net 例子——(1)基础
    C# Pinvoke判断是UEFI模式还是BIOS模式
    wpf Route Event Code Snippet
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11332485.html
Copyright © 2020-2023  润新知