zoukankan      html  css  js  c++  java
  • 模块介绍-os/shuilt/subprocess/comfigparser

    day18

    一、os模块

    1、os模块的常用方法

    os.sep:取代操作系统特定的路径分隔符
    os.name:指示你正在使用的工作平台。比如对于Windows,它是``'nt'``,而对于Linux``/Unix``用户,它是``'posix'``。
    os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
    os.getenv()和os.putenv:分别用来读取和设置环境变量
    os.listdir():返回指定目录下的所有文件和目录名
    os.remove(``file``):删除一个文件
    os.stat(``file``):获得文件属性
    os.``chmod``(``file``):修改文件权限和时间戳
    os.``mkdir``(name):创建目录
    os.``rmdir``(name):删除目录
    os.removedirs(r“c:python”):删除多个目录
    os.system():运行shell命令
    os.``exit``():终止当前进程
    os.linesep:给出当前平台的行终止符。例如,Windows使用``'
    '``,Linux使用``'
    '``而Mac使用``'
    '
    ## os.path模块
    os.path.``split``():返回一个路径的目录名和文件名
    os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
    os.path.existe():检验给出的路径是否真的存在
    os.listdir(``dirname``):列出``dirname``下的目录和文件
    os.getcwd():获得当前工作目录
    os.curdir:返回当前目录(``'.'``)
    os.chdir(``dirname``):改变工作目录到``dirname
    os.path.isdir(name):判断name是不是目录,不是目录就返回``false
    os.path.isfile(name):判断name这个文件是否存在,不存在返回``false
    os.path.exists(name):判断是否存在文件或目录name
    os.path.getsize(name):或得文件大小,如果name是目录返回0L
    os.path.abspath(name):获得绝对路径
    os.path.isabs():判断是否为绝对路径
    os.path.normpath(path):规范path字符串形式
    os.path.``split``(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
    os.path.splitext():分离文件名和扩展名
    os.path.``join``(path,name):连接目录与文件名或目录
    os.path.``basename``(path):返回文件名
    os.path.``dirname``(path):返回文件路径

    2、subprocess模块

    import os
    # os.system('tasklist')
    import subprocess
    import time
    ​
    obj=subprocess.Popen(
        '123',  #要执行的命令(子进程)
        shell=True, #第一个参数是否是一个
        stdout=subprocess.PIPE, #将子进程的运行结果放入stdout的管道中
        stderr=subprocess.PIPE  #如果子进程运行出错,将错误的结果放入到stderr的管道中
    )
    # print(obj)  #此时打印obj返回一串内存地址
    stdout_res=obj.stdout.read()   #读取 obj下面的stdout属性
    # print(stdout_res.decode('gbk'),type(stdout_res.decode('gbk')))  未指定编码  win系统默认gbk
    # print(stdout_res)
    ​
    stderr_res1=obj.stderr.read()
    stderr_res2=obj.stderr.read()  #生成的一个对象相当于一个文件 结果只能读取一次 后续继续读取内容为空
    stderr_res3=obj.stderr.read()
    print(stderr_res1.decode('gbk'))
    print(stderr_res1)
    # print(stderr_res2)
    # print(stderr_res3)
    # import time
    # time.sleep(50)

    三、shutil模块

    #1# shutil.copyfileobj(fsrc,fdst[,length]) #将文件拷贝到另一个文件中  拷贝文件必须存在
    #import shutil 
    #shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
    #2# shutil.copyfile(src, dst) #拷贝文件
    #shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在
    #3# shutil.copymode(src, dst) #仅拷贝权限。内容、组、用户均不变
    #shutil.copymode('f1.log', 'f2.log') #目标文件必须存在
    #4# shutil.copy(src, dst) #拷贝文件和权限
    #shutil.copy('f1.log', 'f2.log')
    #5# shutil.copy2(src, dst)  #拷贝文件和状态信息
    #shutil.copy2('f1.log', 'f2.log')
    #6# #shutil.ignore_patterns(*patterns)
        #shutil.copytree(src, dst, symlinks=False, ignore=None)
        #递归的拷贝文件夹
    #shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 
    import shutil
    shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    '''
    通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件
    '''#7# shutil.rmtree(path[, ignore_errors[, onerror]])#递归的去删除文件
    #shutil.rmtree('folder1')
    #8# shutil.move(src, dst) #递归的去移动文件,它类似mv命令,其实就是重命名。
    #shutil.move('folder1', 'folder3')
    #9# shutil.make_archive(base_name, format,...)
    #创建压缩包并返回文件路径,例如:zip、tar
    #将 /data 下的文件打包放置当前程序目录
    import shutil
    ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
       
    #将 /data下的文件打包放置 /tmp/目录
    import shutil
    ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') 

    四、configparser模块(配置文件解析器)

    1、配置文件(以cfg结尾):

    [section1]
    username = jack
    age = 18
    [section2]
    salary = 21

    2、读取文件(py文件):

    import configparser
    ​
    config=configparser.ConfigParser()#获得配置文件解析器config
    config.read('a.cfg')   #读取配置文件a.cfg
    #查看所有的标题
    res=config.sections() #获得分区['section1', 'section2']
    print(res)
    ​
    #查看标题section1下所有key=value的key
    options=config.options('section1')
    print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']
    #查看标题section1下所有key=value的(key,value)格式
    item_list=config.items('section1')
    print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]
    #查看标题section1下user的值=>字符串格式
    val=config.get('section1','user')  #查看分区下的内容需要两个参数(字符串格式的)
    print(val) #egon
    #查看标题section1下age的值=>整数格式
    val1=config.getint('section1','age')
    print(val1) #18
    #查看标题section1下is_admin的值=>布尔值格式
    val2=config.getboolean('section1','is_admin')
    print(val2) #True
    #查看标题section1下salary的值=>浮点型格式
    val3=config.getfloat('section1','salary')
    print(val3) #31.0

    3、改写配置文件

    import configparser
    ​
    config=configparser.ConfigParser()
    config.read('a.cfg',encoding='utf-8')
    ​
    ​
    #删除整个标题section2
    config.remove_section('section2')
    ​
    #删除标题section1下的某个k1和k2
    config.remove_option('section1','k1')
    config.remove_option('section1','k2')
    ​
    #判断是否存在某个标题
    print(config.has_section('section1'))
    ​
    #判断标题section1下是否有user
    print(config.has_option('section1',''))
    ​
    ​
    #添加一个标题
    config.add_section('egon')
    ​
    #在标题egon下添加name=egon,age=18的配置
    config.set('egon','name','egon')
    config.set('egon','age',18)  #报错,修改配置文件必须是字符串
    ​
    ​
    #最后将修改的内容写入文件,完成最终的修改
    config.write(open('a.cfg','w'))

     

  • 相关阅读:
    java的构造方法 java程序员
    No result defined for action cxd.action.QueryAction and result success java程序员
    大学毕业后拉开差距的真正原因 java程序员
    hibernate的回滚 java程序员
    验证码 getOutputStream() has already been called for this response异常的原因和解决方法 java程序员
    浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓 java程序员
    你平静的生活或许会在某个不可预见的时刻被彻底打碎 java程序员
    Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下 java程序员
    poj1416Shredding Company
    poj1905Expanding Rods
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10099108.html
Copyright © 2011-2022 走看看