• 模块介绍-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'))

     

  • 相关阅读:
    python_paramiko_SSHException Invalid requirement, parse error at
    python_实现发送邮件功能
    人生格言-羊皮卷
    xshell的Solarized Dark配色方案
    vim常用的配置
    Hadoop1.2.1 HDFS原理
    Hadoop1.x目录结构及Eclipse导入Hadoop源码项目
    Hadoop1.2.1 出现Warning: $HADOOP_HOME is deprecated.的解决方案
    Hadoop1.2.1 启停的Shell 脚本分析
    Hadoop1.2.1 配置文件详解
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10099108.html
Copyright © 2020-2023  润新知