• os,os.path,subprocess,configparper,shutil


    os模块

      os 表示的是操作系统,该模块主要是处理与操作系统相关的操作

      最常用的是文件操作  打开,读取,写入,删除,复制,重命名等

      什么时候用os模块?     当需要操作文件及文件夹的时候,重点是在对文件的增删查上

     1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
     2 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
     3 os.curdir  返回当前目录: ('.')
     4 os.pardir  获取当前目录的父目录字符串名:('..')
     5 os.makedirs('dirname1/dirname2')    可生成多层递归目录
     6 os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
     7 os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
     8 os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
     9 os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    10 os.remove()  删除一个文件
    11 os.rename("oldname","newname")  重命名文件/目录
    12 os.stat('path/filename')  获取文件/目录信息
    13 os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    14 os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    15 os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    16 os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    17 os.system("bash command")  运行shell命令,直接显示
    18 os.environ  获取系统环境变量
    os模块

    os.path模块

          path 翻译为路径,用于处理路径
          python跨平台,各平台的路径书写方式不同,所有将所有与路径相关的都进行了封装,使用后不会因为路径产生错误
          总结:主要处理路径,不会关心路径是否存在,只是做拼接,剪切,转换等操作通常与os一起使用,优点是:处理路径可以跨平台的

     1 os.path.abspath() 返回绝对路径,将当前执行文件所在的文件夹与参数进行拼接
     2 os.path.spilt()  将路径分割为文件夹和文件
     3 os.path.dirname()    返回文件夹名称
     4 os.path.basename()  返回文件名称
     5 os.path.exists()  如果path存在则返回True,不存在则返回False
     6 os.path.isabs()   判断是否是绝对路径,判断依据是第一个字符是否为路径分隔符
     7 os.path.isfile()  判断路径是否文件,不是一个文件必然是一个文件夹
     8 os.path.isdir()   是否目录
     9 os.path.join()  将多个路径组合后返回,以当前平台的路径分隔符分隔,如果有多个盘符取的是最后一个
    10 os.path.getatime() 返回最后存取时间
    11 os.path.getmtime() 返回最后修改时间
    12 os.path.getsize()  返回pyth的大小
    13 normcase()  返回规范路径,大写变小写,反斜杠转换为正斜杠
    14 normpath()  执行点或点点,返回上级或上上级,反斜杠转换为正斜杠  
    View Code

    subprocess 模块

      进程是一个正在运行的程序,subprocess称之为子进程
           为什么要用子进程?一个程序在运行过程中需要启动另外一个程序
         为什么使用? 有一个任务需要处理,而自己的程序无法处理,所以需要开启一个程序
         例如python想要获取所有的进程(任务列表)信息
         os.system 在执行系统之灵时,也可以命令操作系统启动某个程序
         os.system 在执行时,直接把结果输出到控制台,无法获取执行结果
         subprocess 不仅可以启动子进程,还能与子进程进行数据交互

     1     tasklist | findstr cmd
     2 
     3     import subprocess
     4     #dir 要执行的指令  shell表示dir是一个命令  stdout 指定输出管道
     5     #什么是管道?  相当于生活中的管子,可以从一个地方通向另一个地方
     6     #管道的作用就是将一个进程中的数据传输给另一个进程的,本质上是读写同一个文件
     7     p = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE) 
     8     print(p.stdout.read())
     9     #启动一个dir子进程,并将结果输出到指定管道
    10 
    11     #启动一份tasklist子进程,指定输出结果到管道
    12     p1 = subprocess.Popen('tasklist',shell=True,stdout=subprocess.PIPE)
    13     #启动一个findstr的子进程,将p1进程的结果作为p2进程的输入
    14     p2 = subprocess.Popen('findstr cmd',#要执行的指令
    15                             shell=True, #第一个参数是否是一个指令
    16                             stdin=p1.stdout, #指定输入管道
    17                             stdout=subprocess.PIPE, #指定输出管道
    18                             stderr=subprocess.PIPE)#表示错误信息 当程序出错时,在错误管道中查看结果
    19 
    20     print(p2.stdout.read())
    21     print(p2.stdout.read().decode('GBK'))
    subprocess

    configparper模块

         作为配置信息很少做修改
      read读取配置文件  

      添加
            add_setion 添加分区
            set 如果没有这个选项则添加

      删除
              remove_option
              remove_section
            判断是否存在某个
              cfg.has_option
              fg.has_setion

     1 section#分区  可以存在多个分区,但是不能重名
     2            #同一个分区下不能有重复的option
     3     option #选项
     4     
     5     import configparser
     6     
     7     cfg = configparser.Confgpaper()
     8     
     9     #读取名为filename的配置文件
    10     cfg.read('filename',encodeing = 'utf-8')
    11     #获取分区
    12     cfg.section()
    13     #获取某个分区下的某个选项 第一个参数为分区名,第二个为选项名称
    14     lock = cfg.getboolean('','')
    15     #封装了类型转换更加方便
    16     cfg.gerfloat()
    17     cfg.gerint()
    18     cfg.getboolean()
    19     读取某个配置文件的信息的步骤:
    20         1.读取某个配置文件
    21         2.调用get函数
    22     #修改内容
    23     import configparser
    24     cfg = configparser.Confgpaper()
    25     cfg.read('filename',encodeing = 'utf-8')
    26     cfg.set('','','')    修改 
    27     with open('',mode='',encodeing='') as f:        
    28         cfg.write(f)
    29     #添加内容
    30     import configparser
    31     cfg = configparser.Confgpaper()
    32     cfg.read('filename',encodeing = 'utf-8')
    33     cfg.add_section('')
    34     cfg.add_option('','')
    35     with open('',mode='',encodeing='') as f:        
    36     cfg.write(f)
    37     #删除
    38     cfg = configparser.Confgpaper()
    39     cfg.read('filename',encodeing = 'utf-8')    
    40     cfg.remove_section('')
    41     cfg.remove_option('')
    42     with open('',mode='',encodeing='') as f:        
    43     cfg.write(f)
    configparper

    shutil 模块

      shutil 提供一个工具包封装了文件高级操作
           功能与os有些重叠,os只能处理文件是否存在,路径是否正确,无法直接完成copy功能
           shutil 提供压缩与解压缩

     #压缩文件支持格式 .zip .tar
     import shutil
        shutil.make_archive('文件夹路径','format',r'除本身之外的路径')

    shutil.make_archive(base_name, format,...)

    创建压缩包并返回文件路径,例如:zip、tar

    创建压缩包并返回文件路径,例如:zip、tar

      • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
        如 data_bak                       =>保存至当前路径
        如:/tmp/data_bak =>保存至/tmp/
      • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
      • root_dir: 要压缩的文件夹路径(默认当前目录)
      • owner: 用户,默认当前用户
      • group: 组,默认当前组
      • logger: 用于记录日志,通常是logging.Logger对象

        #解压缩
        shutil.unpack_archive('文件夹路径','format',r'除本身之外的路径')

     1 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中
     2 shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
     3 shutil.copyfile(src, dst) 拷贝文件
     4 shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在
     5 shutil.copymode(src, dst) 仅拷贝权限。内容、组、用户均不变
     6 shutil.copymode('f1.log', 'f2.log') #目标文件必须存在
     7 shutil.copystat(src, dst)仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
     8 shutil.copystat('f1.log', 'f2.log') #目标文件必须存在
     9 shutil.copy(src, dst)拷贝文件和权限
    10 shutil.copy('f1.log', 'f2.log')
    11 shutil.copy2(src, dst) 拷贝文件和状态信息
    12 shutil.copy2('f1.log', 'f2.log')
    13 shutil.ignore_patterns(*patterns)
    14 shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹
    15 shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 
    16 shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件
    17 shutil.rmtree('folder1')
    18 shutil.move(src, dst) 递归的去移动文件,它类似mv命令,其实就是重命名。
    19 shutil.move('folder1', 'folder3')
    View Code
    学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
  • 相关阅读:
    async/await使用深入详解
    尴尬的事情又发生Newtonsoft.Json vs Protobuf.net
    在dotnet core下去中心化访问HTTP服务集群
    条件随机场CRF(一)从随机场到线性链条件随机场
    用hmmlearn学习隐马尔科夫模型HMM
    隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
    隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
    隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率
    隐马尔科夫模型HMM(一)HMM模型
    EM算法原理总结
  • 原文地址:https://www.cnblogs.com/yangyufeng/p/10097516.html
Copyright © 2020-2023  润新知