常用模块之configpaser与shutil

摘要:
更改后,需要将修改后的内容写入文件以完成最终修改。

configparser模块

  • 定义:configparser翻译为配置解析,即它是用来解析配置文件的

    配置文件:用于编写程序的配置信息的文件

    • 配置文件编写格式

      • 配置文件中只允许出现两种类型的数据

        1. section 分区(标题) 方括号中是分区的名称 例如:[ATM]

        2. option 选项(key) 名称=值

      • 注意:

        • 不能出现重复的分区名

        • 同一个分区不能有相同的选项名

        • 值可以是任意类型 且字符串不需要引号

  • 用法

    展示配置格式

    #配置信息 test.cfg
    [section1]
    k1 = v1
    k2:v2
    name = jason
    password = 123
    ​
    ​
    [section2]
    k1 = v1
    k2:v2
    name = jason
    password = 123
    configparser用法流程
    
    import configparser
    ​
    # 获取解析对象
    config = configparser.ConfigParser()
    # 读取某个配置文件
    config.read('test.cfg', encoding='utf-8')
    ​
    ​
    # 下面可以对配置文件进行增删查改
    ​
    ​
    """
    查看
    """
    # 查看所有标题 (以列表形式存储)
    res = config.sections()  # ['section1', 'section2']
    print(res)
    ​
    # 查看标题下所有的key=value的key
    options = config.options('section1')
    print(options)  # ['k1', 'k2', 'name', 'password']
    ​
    # 查看标题section1下所有key=value的(key,value)格式
    item_list = config.items('section1')
    print(item_list)  # [('k1', 'v1'), ('k2', 'v2'), ('user', 'jason'), ('password', '123')]
    ​
    # 查看标题section1下user的值=>字符串格式
    val = config.get('section1', 'name')
    print(val)  # jason
    ​
    # 查看标题section1下key的值=>整数格式(内进行了一个类型转换,下同)
    val1 = config.getint('section1', 'key')
    print(val1)  # 整型数字
    ​
    # 查看标题section1下key的值=>布尔值格式
    val2 = config.getboolean('section1', 'key')
    print(val2)  # True/False
    ​
    # 查看标题section1下key的值=>浮点型格式
    val3 = config.getfloat('section1', 'key')
    print(val3)  # float
    ​
    ​
    """
    删除.remove
    """
    # 删除整个标题section2
    config.remove_section('section2')
    ​
    # 删除标题section1下的某个k1
    config.remove_option('section1', 'k1')
    ​
    ​
    """
    增加.add
    """
    ​
    # 添加一个标题(分区)
    config.add_section('section3')
    ​
    ​
    """
    修改(可看作增加,存在则为修改)
    """
    # 在标题section1下添加name=James,age=34的配置
    config.set('section1', 'name', 'James')  # 如果存在则覆盖原来的值
    config.set('section1', 'age', 18)  # 报错,必须是字符串
    ​
    ​
    """
    # 对于增、删、改。更改过后需要再将修改后的内容写入文件
    才算完成最终的修改。
    """
    config.write(open('test.cfg', 'w'))

    注意:作为配置文件,最常用的操作就是读取,很少会做修改

  • 总结:

    1. read读取配置文件

    2. add_section添加分区

    3. set 如果没有这个选项则添加

    4. remove_section 删除分区

    5. remove_option 删除选项

    # 请使用配置文件记录登录用户名和密码  下次登录时直接读取配置文件
    # 在进行登录前 先判断是否存在用户名和密码在配置文件中
    # 如果有则读取配置文件并登录
    # 如果没有则正常输入用户名和密码 登录成功时将用户名和密码写入配置文件

shutil模块

  • 该模块提供了丰富的文件操作功能,压缩,解压缩,获取文件信息等

  • 相应功能使用

    shutil.copyfileobj   拷贝文件 提供两个文件对象 长度表示缓冲区大小
    shutil.copyfile(src, dst) 拷贝文件 提供两个文件路径 
    shutil.copymode()  拷贝文件权限 提供两个文件路径
    shutil.copystat(src, dst) 拷贝文件状态信息 最后访问 最后修改 权限 提供两个文件路径
    shutil.copy(src, dst) 拷贝文件和权限   提供两个文件路径
    shutil.copy2(src, dst) 拷贝文件和状态信息 提供两个文件路径
    ​
    shutil.ignore_patterns("mp3","*.py")
    shutil.copytree(src, dst, symlinks=False, ignore=None) 拷贝目录  
    symlinks默认False将软连接拷贝为硬链接  否则拷贝为软连接
    ​
    shutil.rmtree 删除目录 可以设置忽略文件
    shutil.move(src, dst)   移动目录和文件
  • 压缩与解压缩测试

    import shutil
    #压缩,  文件名 格式  需要压缩的文件所在文件夹
    shutil.make_archive("压缩测试","zip",path)
    #解压缩 #压缩,  文件名  解压后的文件存放目录
    shutil.unpack_archive("压缩测试.zip",path)

免责声明:文章转载自《常用模块之configpaser与shutil》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面向对象三大特性之多态Python模块之OS,subprocess下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

snappy的性能测定 42qu.com

snappy的性能测定 - 42qu.com snappy的性能测定 要去马尔代夫渡蜜月了,闪人前最后一贴。 方法是用python准备数据,然后用timeit进行测试。虽然因为python框架的干扰,具体时值不是很准。但是用来做数量级对比和计算足够了。原生数据是一个屏幕截图,4M的数据块。 zlib.compress: 0.054105230093 sna...

Debian下LAMP环境的搭建

Debian下LAMP环境的搭建 以前安装LAMP环境都是采用下载软件包自己编译安装的方法搭建的。当时以为采用apt的方式来安装时软件包版本的陈旧是一个问题,另一个主要的问题就是并不知道apt将这些软件包安装到什么地方,从而使得自己要修改一个配置文件或是启动一个服务命令时都找不到。采用手工编译安装的方法,虽然可以很好的控制软件包的安装位置,但是却不得不自...

民营电信业强势出位 佛山无线城市建设现新看点

民营电信业强势出位 佛山无线城市建设现新看点 虽然全面来到的 3G 时代让人们更加关注三大运营商方面的动向,但作为国家一个长期的建设项目,无线城市的规划在多年前就已经全面起步,各地的部署也一直在按部就班的进行。也许你在相当长的时间当中都不会用到 3G ,不会去考虑是选择 TD、 WCDMA还是 CDMA2000,但是无线城市的网络覆盖可以为城市...

vi编辑器的学习使用(十九)

Vim编辑器强大的搜索引擎可以使得我们快速的执行各种类型的查找,从而大的方便了我们的编辑工作,使得我们的编辑工作更加快速和高效.我们在进行查找的过程中可以打开高亮显示选项,这样在我们找到我们想要的字符后,Vim就会将字符串进行高亮显示,我们也可以很方便的知道我们要找的字符串在哪里.我们可以使用下面的命令来打开高亮显示选项::set hlsearch关闭这个选...

Readline简介 Linux技术问答 Linux中国 | Linux.cn 我们的Linux中文社区

Readline简介 - Linux技术问答 - Linux中国 | Linux.cn - 我们的Linux中文社区 Readline简介 [复制链接] 查看: 744|回复: 1 楼主 SpringWater 发表于 2010-8-30 11:48 |只看该作者 |倒序浏览 |打印 Readline 是一个强大的库,...

Glib学习笔记(4) Innost的专栏 博客频道 CSDN.NET

Glib学习笔记(4) - Innost的专栏 - 博客频道 - CSDN.NET Glib学习笔记(4) 2010-04-13 17:40715人阅读评论(0)收藏举报 四数据结构 这部分非常重要。 4.1 内存片管理 memory slices是一个高效的分配和管理等尺寸的类。 这个和普通的new/delete相比有什么特别之处? 似乎更高效,...