day 16小结

1.os 模块

对文件操作

判断是否为文件

res = os.path.isfile(r'D:\上海python12期视频\python12期视频\day 16\00 上节课回顾.md')
print(res)

删除文件

os.remove(r'文件名')

重命名文件

os.rename(r'原文件名','修改文件名')

对文件夹操作

判断是否为文件夹

os.path.isdir()

创建文件夹

is not os.path.exists(r'D:\上海python12期视频\python12期视频\test')
    os.mkdir(r'D:\上海python12期视频\python12期视频\test')

删除文件夹

os.rmdir(r'D:\上海python12期视频\python12期视频\test')

列出文件夹内所有文件(****)

res = os.listdir(r'D:\上海python12期视频\python12期视频\test')
print(res)

辅助性的

当前文件的所在文件夹

res = os.getcwd()
print(res)

当前文件所在具体路径

file    pycharm独有
print('__file__:',__file__)
res = os.path.abspath(__file__)  # 根据不同的操作系统,更换不同的\或/
print(res)

文件的文件夹

res = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(res)

拼接文件路径

res = os.path.join.(os.path.dirname(os.path.abspath(__file__))),'img','test.jpg')
print(res)

判断路径是否存在(文件or文件夹都适用)

res = os.path.exists(r'D:\上海python12期视频\python12期视频\test')
print(res)

尽量不要写路径

了解

执行终端代码

rse = os.system('dir')
print(res)

2.sys模块

与python解释器交互

最常用,当使用命令行运行文件,接受多余的参数

import sys


res = sys.argv
print(res)

拿到当前导入的模块

print(sys.modules.keys())

了解

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时exit(0)
sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.maxunicode 最大的Unicode值
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix 返回平台独立的python文件安装的位置
sys.byteorder 本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little'
sys.copyright 记录python版权相关的东西
sys.api_version 解释器的C的API版本

3.json和pickle模块

json模块: 跨平台数据交换,json串

pickle模块: 不跨平台,针对python所有数据类型,如集合,使用方式和json一模一样

序列化: 按照特定的规则排列(json串-->跨平台交互,传输数据)

反序列化: 按照特定的规则把json串转换成python/java/c/php 需要的数据类型

了解序列化和反序列化是什么

import json

dic = [1,(1,2)]

res = json.jumps(dic)  # json串中没有单引号
print(type(res),res)  # 跨平台数据交互

res = json.loads(res)
print(type(res),res)

------------------------------------------------
dic = {'a': True, 'b': None}

# 序列化字典为json串,并保存文件
import json
def dic():
    print('func')
with open('test.json','w', encoding='utf8') as fw:
    json.jump(dic,fw)

反序列化

with open('test.json','r',encoding='utf8') as fr:
    data = json.load(fr)
    print(type(data),data)
    
    
goods = {
    1:'awaw',
}

with open('nick,json', 'r', encodingn='utf8') as fr:
    data = json.load(fr)
    data['wawa']= 1
    data['extra'] -= 10
    data['locked'] = 1
with open('nick.json', 'w', encoding='utf8') as fw:
    json.dump(data, fw)

pickle

import pickle  # 未来存对象

def func():  # 针对地址而言,只存了一个函数名
    print('func')
    
with open('test.pkl','wb') as fw:
    pickle.dump(func,fw)
    
    
def func():
    print('asdglaads')
    
with open('test.pkl', 'rb') as fr:
    data = pickle.load(fr)
    print(type(data),data)
    data()  # func()

4.logging模块

import logging

# 日志级别(如果哦不设置,默认显示30以上)
# v1
logging.info('info')  # 10
logging.debug('debug') # 20
logging.warning('wraning')  # 30
logging.error('error')  # 40
logging.critical('critical')  # 50

# v2-->  添加设置

logging.basicConfig(filename='20190927.log',
                    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S %p',
                    level=10)
username = 'nick'
goods = 'bianxingjingang'
logging.info(f'{username}购物{goods}成功')  # 10

# v3-->  添加配置

# 1. 配置logger对象
nick_logger = logging.Logger('nick')
json_logger = logging.Logger('jason')

# 配置格式
formmater1 = logging.Formatter('%(asctime)s - %(name)s -%(thread)d - %(levelname)s -%(module)s:  %(message)s',
                               datefmt='%Y-%m-%d %H:%M:%S %p ', )

formmater2 = logging.Formatter('%(asctime)s :  %(message)s',
                               datefmt='%Y-%m-%d %H:%M:%S %p', )

formmater3 = logging.Formatter('%(name)s %(message)s', )

# 3.配置handler -->往文件打印or往终端打印

h1 = logging.FileHandler('nick.log')
h2 = logging.FileHandler('json.log')
sm = logging.StreamHandler()

# 4. 给handler配置格式
h1.setFormatter(formmater1)
h2.setFormatter(formmater2)
sm.setFormatter(formmater3)

# 5. 把handler绑定给logger对象
nick_logger.addHandler(h1)
nick_logger.addHandler(sm)
json_logger.addHandler(h2)

# 6. 直接使用
nick_logger.info(f'nick 购买 变形金刚 4个')
# json_logger.info(f'json 购买 变形金刚 10个')


# 记住以上可以全部忘记,只要会下面的cv大法

猜你喜欢

转载自www.cnblogs.com/LZF-190903/p/11600615.html