PYTHON之路(六)

shutil 高级的 文件、文件夹、压缩包 处理模块 http://www.cnblogs.com/wupeiqi/articles/4963027.html

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

shelve模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

import shelve

d = shelve.open(‘shelve_test‘) #打开一个文件

class Test(object):
def __init__(self,n):
self.n = n

t = Test(123)
t2 = Test(123334)

name = ["alex","rain","test"]
d["test"] = name #持久化列表
d["t1"] = t #持久化类
d["t2"] = t2

d.close()

持久化存储,如果已经有的key-value,再次写时如果value有更新就会更新。
用shelve.open(‘test‘), 如果test本身不存在,会创建三个文件,test.dir, test.bak, test.dat. 下次要用到时,还是shelve.open(‘test‘)就可以。
而pickle再重新打开文件,dump时,如果不是追加模式,原来文件里的内容会冲掉。

xml module

PyYAML

configparser

hashlib
hmac

subprocess

python2.7下

logging

import logging

#create logger
logger = logging.getLogger(‘TEST-LOG‘)
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create file handler and set level to warning
fh = logging.FileHandler("access.log")
fh.setLevel(logging.WARNING)
# create formatter
formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)

# add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)

# add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)

# ‘application‘ code
logger.debug(‘debug message‘)
logger.info(‘info message‘)
logger.warn(‘warn message‘)
logger.error(‘error message‘)
logger.critical(‘critical message‘)

类的三个特性: 封装,继承,多态

类变量与实例变量

例子1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class Role(object):
members = 0
ac = None
def __init__(self,name,role,weapon,life_value):
self.name = name
self.role = role
self.weapon = weapon
self.life_val = life_value
Role.members +=1
def buy_weapon(self,weapon):

print("%s is buying [%s]" %(self.name,weapon))
self.weapon = weapon
print(self.ac)

#role 的实例
#把一个抽象的类变成一个具体的对象的过程 叫实例化
p1= Role("SanJiang",‘Police‘,"B10",90)
t1= Role("ChunYun",‘Terrorist‘,"B11",100)
t2= Role("T2",‘Terrorist‘,"B17",100)
t3= Role("T3",‘Terrorist‘,"B19",100)
p1.buy_weapon("AK47") #Role.buy_weapon(p1,"AK47")
t1.buy_weapon("B51")

p1.ac = "China Brand"
t1.ac = "US Brand"
Role.ac = "Janpanese Brand"
print("P1:",p1.weapon,p1.ac)
print("T1:",t1.weapon,t1.ac)
print("T2:",t2.ac,t2.weapon)
print("T3:",t3.ac,t3.weapon)
print(Role.buy_weapon)

例子二:

class SchoolMember(object):
member_nums = 0
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
self.enroll()
def enroll(self):
SchoolMember.member_nums +=1
print("\033[32;1mThe [%s] school member [%s] is enrolled!\033[0m" %(self.member_nums,self.name))

类的继承

#!/usr/bin/env python
# -*- coding:utf-8 -*-
class SchoolMember(object):
member_nums = 0
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
self.enroll()
def enroll(self):
SchoolMember.member_nums +=1
print("\033[32;1mThe [%s] school member [%s] is enrolled!\033[0m" %(self.member_nums,self.name))

def tell(self):
print("Hello my name is %s" %self.name)
class Teacher(SchoolMember):
def __init__(self,name,age,sex,course,salary):
super(Teacher,self).__init__(name,age,sex)
self.course = course
self.salary = salary
#SchoolMember.__init__(self,name,age,sex)
def teaching(self):
print("Teacher [%s] is teaching [%s]" %(self.name,self.course))

class Student(SchoolMember):
def __init__(self,name,age,sex,course,tuition):
super(Student,self).__init__(name,age,sex)
self.course = course
self.tuition = tuition
def pay_tution(self):
print("cao ,student [%s] paying tution [%s]" %(self.name,self.tuition))

t1 = Teacher("Alex",22,‘F‘,"PY",1000)
t2 = Teacher("Tenglan",25,‘N/A‘,"PY",900)
s1 = Student("SanJiang",24,"Female","python",15000)
s2 = Student("BaoAn",23,"F","python",5000)

t1.tell()
t1.teaching()
s1.tell()
s1.pay_tution()

时间: 2024-11-05 04:52:23

PYTHON之路(六)的相关文章

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

Python之路【第六篇】:socket

Python之路[第六篇]:socket Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

Python之路_Day10

Python之路_Day10_课堂笔记 上节回顾: socket: 1.导入模块 2.创建socket 3. 字节 send:每次发送可能没有完全发送,send发送后会有一个返回值,是本次发送了多少. sendall:循环发送,直到全部发送完全. 接收 recv(2048):最多可以接收2048字节,上传文件时需要注意 粘包: socketserver: 1.自定义类 2.继承socketserver.BaseRequestHandler类 3.重写handle方法 4.socketserver

Python之路_Day5

Python之路_Day5_课堂笔记 ---------------------------------------------------------------------------------------------------- 前期回顾: 一.python基础 二.基本数据类型 int str list tuple dict set 三.函数式编程 四.装饰器 1.将func当作参数传递给装饰器,并执行 2.将装饰器函数的返回值重新赋值给func ------------------

Python之路_Day6

Python之路_Day6_课堂笔记 前期回顾: 无 本期内容: 一.atm作业讲解 二.递归的例子,阶乘 三.反射 四.模块 五.冒泡算法 六.本周作业 一.ATM作业讲解 二.递归的例子,阶乘 使用递归实现"1*2*3*4*5*6*7" #!/usr/bin/env python # -.- coding: utf-8 -.- # By sandler # 递归阶乘 def func(num): if num == 1: return 1 return num * func(num

Python之路_Day12

Python之路_Day12_课堂笔记 上节回顾 一.线程 线程 基本线程使用 队列-消息队列 线程池 进程 基本使用 进程数据共享 进程池 协程 更适用IO操作 二.Memcache.Redis Memcache 集群: (C1,1) (C2,2) (C3,1) [C1,C2,C2,C3] gets/cas Redis 一. 默认支持连接池 支持事务 发布和订阅 二.Redis基本操作 三.自定义 Redis列表类型 默认全部取 根据索引取值 本节预告 一.线程池 二.redis,发布订阅 三

七日Python之路--第十一天

(一)关于模板,Template 可以在项目根目录下的settings.py 配置文件中,声明 import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) TEMPLATE_DIRS = os.path.join(BASE_DIR, 'templates') 这样模板的默认搜索就是在根目录的'templates'文件下进行寻找. 但是,感觉还是不声明,直接使用默认的搜索路径比较好.当不进行声明时,默认搜索路径是相应的app应用目

Python之路_Day11

Python之路_Day11_课堂笔记 前期回顾 本节摘要 一.多线程 基本使用 生产者消费者模型(队列) 自定义线程池 二.多进程 基本使用 进程池 三.协程 greenlet gevent 四.缓存 memcache redis 五.rabbitMQ 六.下节预告: MySQL ORM框架-sqlchemy 堡垒机 一.线程 创建线程的两种基本使用方法: #!/usr/bin/env python # -.- coding: utf-8 -.- # By sandler import thr