# day23笔记

## 一.补充,作业

### 1.字符串格式化

```python
msg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2': 123, }
print(msg)
``` ```python
# v1 = "我是{0},年龄{1}".format('alex',19)位置参数
v1 = "我是{0},年龄{1}".format(*('alex',19,))
print(v1) # v2 = "我是{name},年龄{age}".format(name='alex',age=18)关键字参数
v2 = "我是{name},年龄{age}".format(**{'name':'alex','age':18})
print(v2)
``` ### 2.有序字典 ```python
from collections import OrderedDict info = OrderedDict()
info['k1'] = 123
info['k2'] = 456 print(info.keys())
print(info.values())
print(info.items())
``` ### 3.反射 ```python
class Cloud(object): def upload(self):
pass def download(self):
pass def run(self):
# up|C:/xxx/xxx.zip
# down|xxxx.py
value = input('请用户输入要干什么?')
action = value.split('|')[0]
# 最low的形式
if action == 'up':
self.upload()
elif action == 'down':
self.download()
else:
print('输入错误') # 构造字典 (*)
method_dict = {'up':self.upload, 'down':self.download}
method = method_dict.get(action)
method() # 反射(*)
method = getattr(self,action) # upload/download(方法名)
method()
``` ## 二.单例模式(23种) - 无论实例化多少次,永远用的都是第一次实例化出的对象. - 标准(单例类名用Singleton) ```python
class Singleton(object):
instance = None
def __new__(cls, *args, **kwargs):
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance obj1 = Singleton()
obj2 = Singleton() # 不是最终,还有加锁。
``` - 文件的连接池 ```python
class FileHelper(object):
instance = None
def __init__(self, path):
self.file_object = open(path,mode='r',encoding='utf-8') def __new__(cls, *args, **kwargs):
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance obj1 = FileHelper('x')
obj2 = FileHelper('x')
``` ## 三.模块导入 - 多次导入重新加载 ```python
import jd # 第一次加载:会加载一遍jd中所有的内容。
import jd # 由已经加载过,就不在加载。
print(456)
``` ## 三.模块导入 - 非要加载的话 ```python
import importlib
import jd
importlib.reload(jd)
print(456)
``` - 通过模块导入实现单例模式: ```python
# jd.py
class Foo(object):
pass obj = Foo()
``` ```python
# app.py
import jd # 加载jd.py,加载最后会实例化一个Foo对象并赋值给obj
print(jd.obj)
``` ## 四.日志(logging) - 日志处理本质 : Logger/FileHandler/Formatter - 处理日志方式 : ```python
import logging file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
handlers=[file_handler,],
level=logging.ERROR
) logging.error('你好')
``` - 推荐处理日志方式 + 日志分割 ```python
import time
import logging
from logging import handlers
# file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
file_handler = handlers.TimedRotatingFileHandler(filename='x3.log', when='s', interval=5, encoding='utf-8')
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
handlers=[file_handler,],
level=logging.ERROR
) for i in range(1,100000):
time.sleep(1)
logging.error(str(i))
``` - 注意事项 ```python
# 在应用日志时,如果想要保留异常的堆栈信息。
import logging
import requests logging.basicConfig(
filename='wf.log',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.ERROR
) try:
requests.get('http://www.xxx.com')
except Exception as e:
msg = str(e) # 调用e.__str__方法
logging.error(msg,exc_info=True)
``` ## 五.项目结构目录 - 脚本 ```python
import re # 内置函数从短到长
import json
import datetime import xlrd # 第三方放在下面
import requests class 类名(object): # 类
pass def run(): # 函数
pass if __name__ == '__main__': # 主函数
run()
``` - 单可执行文件 ```python
山西-高启芝 2019/4/28 19:58:58
pro # 项目名称总目录
├── app.py # application程序入口
├── config # 配置文件目录
├── db # datebase数据目录
│   └── user.txt
├── lib # 公有性质的模块放置目录
│   └── page.py
└── src # 功能性函数目录
├── account.py # 其他类或函数文件
├── order.py # 其他函数
└── run.py # 主函数文件
``` - 多可执行文件 ```python
pro # 项目名称总目录
├── bin # 程序入口目录
│   ├── admin.py # 管理员入口
│   ├── student.py # 学生入口
│   └── teacher.py # 教师入口
├── config # 配置文件夹
│   └── settings.py # 配置
├── db # datebase数据目录
│   └── user.txt
├── lib # 公有性质的模块放置目录
│   └── page.py
├── log
│   └── test.log
└── src # 功能性函数目录
├── account.py # 其他类或函数文件
├── order.py # 其他函数
└── run.py # 主函数文件 ```

day23单例模式 , 日志处理 , 项目结构目录的更多相关文章

  1. ReactNative项目结构目录详解

    在使用 react-native init TestProject 在新建项目时,会看到如下目录 React Native结构目录 名称 描述 android目录 Android项目目录,包含了使用A ...

  2. eclipse项目结构目录

    文章:eclipse web 项目目录结构 地址:https://blog.csdn.net/Alan_Wdd/article/details/90514928 eclipse web 项目目录结构 ...

  3. 读懂Android项目结构目录

    我们看到下图:当我们创建了第一Android项目的时候有没有被吓到.怎么这么多目录,好头晕啊!没事, 那我们今天就了解一下这些目录是做什么的: src: src 目录是放置我们所有 Java 代码的地 ...

  4. vuex - 项目结构目录及一些简单配置

    首先先正经的来一段官网的"忠告": vuex需要遵守的规则: 一.应用层级的状态应该集中到单个 store 对象中. 二.提交 mutation 是更改状态的唯一方法,并且这个过程 ...

  5. Android项目结构 以及体系结构

    学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src  主要是 源 ...

  6. Maven项目的目录结构+maven的安装与配置

    1.首先下载maven,然后配置环境变量,在MyEclipse里面配置maven 2.配置maven的pom.xml文件 3.下载和更新资源 右击项目,有一个Maven4Myeclipse,里面有三个 ...

  7. Maven项目的目录结构

    刚接触Maven没多长时间,实习时在的小公司很不规范,所有web项目都是dynamic web project搭建,没有用到项目构建,管理工具,导致了非常多的重复工作与低效. 先来看看Maven的功能 ...

  8. ABP架构学习系列一 整体项目结构及目录

    本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...

  9. dubbo、web应用 项目结构以及发布目录结构

    一.dubbo服务项目结构及发布结构 dubbo 服务项目结构 xxxxx-api 接口类和一些DTO 用于供其他项目依赖 需要提供dubbo服务的接口命名 以Facade结尾 (xxxxxFacad ...

随机推荐

  1. hbase 预分区与自动分区

    我们知道,HBASE在创建表的时候,会自动为表分配一个Region,当一个Region过大达到默认的阈值时(默认10GB大小),HBase中该Region将会进行split,分裂为2个Region,以 ...

  2. name 'reload' is not defined解决方法

    今天在学习scrapy的时候,在网上找了一段代码,运行出了一点问题. 命令行报错: name 'reload' is not defined 原因是,python版本的问题 原代码如下: import ...

  3. Java基础系列--01_基础类型

    J2SE.J2ME.J2EE分别指什么? J2SE 基础版,桌面应用. J2ME 微型版,手机开发.(android,ios) J2EE 企业版,所有浏览器访问的应用程序. 注意:JDK5以后改名 J ...

  4. BERT模型在多类别文本分类时的precision, recall, f1值的计算

    BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...

  5. Even Parity UVA - 11464 (枚举)

    从来没有觉得枚举有多费脑子的.但是这道题还是很香的. 思路:就是非常简单的枚举啦.   从一般的枚举开始考虑.一般的做法就是在所有的格子中有两种状态1, 0. 而一共有225个格子,所有一共要枚举的情 ...

  6. button JS篇ant Design of react之二

    最近更新有点慢,更新慢的原因最近在看 <css世界>这本书,感觉很不错 <JavaScript高级程序设计> 这本书已经看了很多遍了,主要是复习前端的基础知识,基础知识经常会过 ...

  7. Graphic

    画圆操作 package demo1; import java.awt.Graphics; import javax.swing.*; import javax.swing.JPanel; publi ...

  8. CSS中的opacity,不透明度的坑

    opacity的用法示例如下 /* 值是0到1之间的数值 */ opacity:0.5 opacity设置在元素上的时候,会出现什么效果? 答曰:如果不设置opacity的话,会显示效果为A(可以理解 ...

  9. HDU 4547 CD操作

    传送门 没啥好说的.就是一个LCA. 不过就是有从根到子树里任意一个节点只需要一次操作,特判一下LCA是不是等于v.相等的话不用走.否则就是1次操作. 主要是想写一下倍增的板子. 倍增基于二进制.暴力 ...

  10. Nginx HTTP框架提供的其它变量

    L74