# import sys
# print(os.getcwd()) F:PYcharmweek1day3 获取当前目录
# print(r'F:PYcharmweek1day3') #修改当前目录 os.chdir() r 就是原字符
# print(os.curdir) #. 当前路径
# print(os.pardir) #.. 上一个层
# os.mkdirs('abc\alex') #创建多层文件夹
# os.removedirs('abc\alex') 判断有没有内容 没有就删掉 只能是空的
# os.mkdir('abc') 生成一个文件夹
# os.rmdir('abc') 只删一个删除文件夹 文件夹里必须为空
# os.listdir('')作为一个list对象展示出来
# r是原生字符串
# os.remove('') 删除文件 不能删除文件夹
# os.rename('oldname','newname') 重命名文件/目录 #abc.txt != abc
# a = os.stat('.\xiaochongshan') 获取文件/目录信息
# print(a.st_size) 0 什么都没写
# print(a)
# os.sep() #路径拼接 各系统都可以用 当前系统的分隔符
# os.linesep() #换行符 各系统都可以用 当前系统的换行符
# os.pathsep() #环境变量分隔符 WIN是; LIUX是:
# print(os.environ) #环境变量 #environ({'LOGONSERVER': '\\DESKTOP-SVF2UPO', 'COMSPEC':
# os.path.abspath('./abc') #找出绝对路径
# os.path.split(r'c:......') #两个元组形式 一个路径 一个是文件名 以最后一个分开
# os.path.dirname('abc') #取文件所在的文件夹的名字 有一个路径 绝对路径和相对路径都可以 拿到是一个绝对路径
# os.path.basename() #拿到文件的名字
# os.path.exists() #存在返回Ture 不存在返回Flase
# os.path.isfile() #判断是不是一个存在的文件
# os.path.isdir() #判断是不是一个存在的文件夹
# os.path.isabs() #是不是一个绝对路径
# os.path.join([a,b]) #路径拼接
# os.path.getmtime() #取文件的修改时间
# os.path.getatime() #取文件的存取时间
#sys 模块
#跟PYthon解释器交互
# print(sys.argv)
# sys.exit() #退出程序 正常退出是exit(0)
# sys.version # PYthon 解释器版本
# sys.maxint #
# sys.path.append() # 解释器寻找的路径 append 添加路径
# sys.platform #显示操作系统的平台
# sys.stdout.write()
# sys.stdin.readline()
# hashlilb 加密
# import hashlib
# m = hashlib.md5()
# m.update('holle world'.encode('utf8')) PYthon 有2个类型 一个是字符串 一个是字节
# print(m.hexdigest()) #6f931ee411b8f49fc939ec274ccfce26
#logging 模块 日志
import logging
# logging.basicConfig(level=logging.DEBUG,##自己调级别
# format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',#自定义格式
# datefmt='%a, %d %b %Y %H:%M:%S',#格式
# filename='test.log',#路径文件名
# filemode='w')#记录到文件里去
# #Mon, 23 Dec 2019 21:14:58 OS模块.py[line:65] DEBUG debug message== 用户输出的信息
# logging.debug('debug message')
# logging.info('info message')
# logging.warning('warning message')
# logging.error('error message')
# logging.critical('critical message')
# %(name)s Logger的名字
# %(levelno)s 数字形式的日志级别
# %(levelname)s 文本形式的日志级别
# %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
# %(filename)s 调用日志输出函数的模块的文件名
# %(module)s 调用日志输出函数的模块名
# %(funcName)s 调用日志输出函数的函数名
# %(lineno)d 调用日志输出函数的语句所在的代码行
# %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
# %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
# %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
# %(thread)d 线程ID。可能没有
# %(threadName)s 线程名。可能没有
# %(process)d 进程ID。可能没有
# %(message)s用户输出的消息
# port logging
# #Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式
# logger = logging.getLogger() #拿一个logger对象 做日志
# fh = logging.FileHandler('test.log') #文件输出流的对象 test.log文件对象
# ch = logging.StreamHandler() #屏幕对象
# formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#注明格式 输出格式对象
# fh.setFormatter(formatter) #文件输出格式 fh. 调用格式
# ch.setFormatter(formatter) #屏幕输出格式 ch. 调用格式
# logger.addHandler(fh) #logger 调用文件对象
# logger.addHandler(ch) #logger 调用屏幕对象
# logger.setLevel(logging.DEBUG) #更改日志级别
# logger.debug('logger debug message')
# logger.info('logger info message')
# logger.warning('logger warning message')
# logger.error('logger error message')
# logger.critical('logger critical message')
#
#configparser 配置模块
# import configparser
# config = configparser.ConfigParser()#生成对象 文件配置的句柄
# # 键 值
# config["DEFAULT"] = {'ServerAliveInterval': '45',
# 'Compression': 'yes',
# 'CompressionLevel': '9'}
# config['bitbucket.org'] = {'User':'hg'}
# config['topsecret.server.com'] = {}
# topsecret = config['topsecret.server.com']
# topsecret['Host Port'] = '50022'
# topsecret['ForwardX11'] = 'no'
# config['DEFAULT']['ForwardX11'] = 'yes'
#
# with open('example.ini', 'w') as configfile:
# config.write(configfile)
# config.read('example.ini')
# print(config.sections()) #读文件 取键['bitbucket.org', 'topsecret.server.com']
# print(config.defaults())# 取默认键 ([('compressionlevel', '9'), ('serveraliveinterval', '45'), ('compression', 'yes'), ('forwardx11', 'yes')])
# for key in config['bitbucket.org']:
# print(key)#user compressionlevel serveraliveinterval compression forwardx11
# config.remove_section('topsecret.server.com') #删除键
# config.has_section('topsecret.server.com') #在不在文件里
# config.set('bitbucket.org','user','qian') #修改的3个条件
# config.remove_option('bitbucket.org','user') #删除 USER
# config.write(open('example.ini', 'w')) #重新录入