day22

今日内容
    1 shutil模块
    2 shelve模块
    3 xml模块
    4 configparser模块
    5 logging模块

# shutil模块
'''
# 高级的文件、文件夹、压缩包 处理模块
import shutil

# 将文件内容拷贝到另一个文件中
# shutil.copyfileobj(open('111.py', 'r'), open('n7.31.py', 'w'))
# 拷贝文件
# shutil.copyfile('7.31.py', 'n7.31.py')      # 目标文件无需存在
# 仅拷贝权限。内容、组、用户均不变
# shutil.copymode('111.py', 'n7.31.py')        # 目标文件必须存在
# 拷贝文件和权限
# shutil.copy('7.31.py', 'nn7.31.py')
# 拷贝文件和状态信息
# shutil.copy2()

# 递归拷贝文件夹
# # shutil.ignore_patterns()
# # shutil.copytree(src, dst, symlinks=False, ignore=None)
# shutil.copytree('f1', 'f2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))  #目标目录不能存在,注意对f2目录父级目录要有可写权限,ignore的意思是排除
# shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))    # 通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件

# 递归删除文件
# shutil.rmtree('folder1')
# 递归移动文件,类似mv命令,相当于重命名
# shutil.move('111.py', 'eee.py')

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

# ret = shutil.make_archive("xxx", 'zip', root_dir=r'F:\notepad\2020.7.01\day22')
# print(ret)

# shutil对压缩包的处理是调用zipfile和tarfile两个模块进行的
# import zipfile
# # 压缩
# z = zipfile.ZipFile('laxi.zip', 'w')
# z.write('a.log')
# z.write('data.data')
# z.close()
# # 解压
# z = zipfile.ZipFile('laxi.zip', 'r')
# z.extractall(path='.')
# z.close()

# import tarfile
# 压缩
# >>> t=tarfile.open('/tmp/egon.tar','w')
# >>> t.add('/test1/a.py',arcname='a.bak')
# >>> t.add('/test1/b.py',arcname='b.bak')
# >>> t.close()
# 解压
# >>> t=tarfile.open('/tmp/egon.tar','r')
# >>> t.extractall('/egon')
# >>> t.close()
'''

# shelve 模块
'''
# shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;
# key必须为字符串,而值可以是python所支持的数据类型
# import shelve
# f = shelve.open('db.shl')
# f['info'] = {"name": "lll", "age": 18}
# print(f['info']['name'])
# f.close()
'''

# configparser 模块

# import configparser
# 
# config = configparser.ConfigParser()
# config.read('settings.ini')
#
# 查看所有的标题
# s = config.sections()
# print(s)
# 查看标题section1下所有key=value的key
# s1 = config.options('log')
# print(s1)
# 查看标题section1下所有key=value的(key,value)格式
# s2 = config.items('log')
# print(s2)
# 查看标题section1下year的值=>字符串格式
# s3 = config.get('log', 'year')
# print(s3, type(s3))
# 查看标题section1下year的值=>整数格式
# s4 = config.getint('log', 'year')
# print(s4, type(s4))
# 查看标题info下is_admin的值=>布尔值格式
# s5 = config.getboolean('info', 'is_admin')
# print(s5, type(s5))
# 

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'))


# logging 模块
import logging

# # 一:日志配置
# logging.basicConfig(
#     # 1、日志输出位置:1、终端 2、文件
#     filename='access.log', # 不指定,默认打印到终端
#
#     # 2、日志格式
#     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
#
#     # 3、时间格式
#     datefmt='%Y-%m-%d %H:%M:%S %p',
#
#     # 4、日志级别
#     # critical => 50
#     # error => 40
#     # warning => 30
#     # info => 20
#     # debug => 10
#     level=30,
# )
#
# logging.debug('1111')
# logging.info('2222')
# logging.warning('33333')
# logging.error('4444')
# logging.critical('5555')
#

# 二:日志配置字典
# import logging.config
# import settings
# 
# logging.config.dictConfig(settings.LOGGING_DIC)

# logger1=logging.getLogger('用户交易')

# logger1.info("egon给alex转了三个亿")

# logger2=logging.getLogger('xxx')
# logger2.info("egon给lqz转了三个亿")


# logger3=logging.getLogger('yyy')
# logger3.info("egon给xx转了三个亿")

 

posted @ 2020-08-02 20:20  板鸭没有腿  阅读(60)  评论(0)    收藏  举报