8 Apr 18
一、包的使用
part1:
import aaa
'''
1 产生一个包的名称空间
2 执行包下的__init__.py(初始化导入)文件,将产生的名字存放于包的名称空间中
3 在当前执行文件中拿到一个名字aaa,该名字指向包的名称空间
'''
print(aaa.m1) #aaa.m1 就是问aaa下的.__init__.py要一个名字m1
aaa.m1.f1()
print(aaa.bbb.zzz)
#包是模块的一种组织形式,可放在软件开发目录下。但和软件开发目录无关。
#模块名约定用全小写
#包内的模块没有右键运行的需求
part2:
强调:
1、在导入时带点的,点的左边必须是一个包,这是导入包特有的语法
2、包内,模块直接的导入应该使用from。。。import 。。。
3、from 。。。 import。。。,import后必须是一个明确的名字,没有任何的前缀
例如: from a.b.c.d.f import g.h.x #错误
1、f左边必须都是包
2、import后的名字不能有任何前缀
part3:
绝对导入与相对导入
绝对导入:以顶级包(nb)作为起始
相对导入(推荐使用):不需考虑执行文件,.表示当前文件的路径,..表示所在文件上一级目录。用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)
import sys
sys.path.append(r'D:\code\SH_fullstack_s1\day16\包的使用part3\dir')
二、常见模块
a、time模块
import time
时间分为三种形式
1、时间戳 (时间秒数的表达形式, 从1970年开始)
print(time.time())
start_time=time.time()
time.sleep(3)
stop_time=time.time()
print(stop_time-start_time)
2、格式化的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
print(time.strftime('%Y-%m-%d %X %p'))
3、struct_time对象
print(time.localtime()) # 上海:东八区
print(time.localtime().tm_year)
print(time.localtime().tm_mday)
print(time.gmtime()) # UTC时区
了解的知识
print(time.localtime(1111111111).tm_hour)
print(time.gmtime(1111111111).tm_hour)
print(time.mktime(time.localtime()))
print(time.strftime('%Y/%m/%d',time.localtime()))
print(time.strptime('2017/04/08','%Y/%m/%d'))
print(time.asctime(time.localtime()))
print(time.ctime(12312312321))
b、datetime模块
import datetime
print(datetime.datetime.now())
print(datetime.datetime.now() + datetime.timedelta(days=3))
print(datetime.datetime.now() + datetime.timedelta(days=-3))
print(datetime.datetime.now() + datetime.timedelta(hours=3))
print(datetime.datetime.now() + datetime.timedelta(seconds=111))
current_time=datetime.datetime.now()
print(current_time.replace(year=1977))
print(datetime.date.fromtimestamp(1111111111))
print(datetime.date.fromtimestamp(time.time()) )
#时间戳直接转成日期格式 2018-04-08
c、random模块
import random
print(random.random()) #0,1;大于0且小于1之间的小数
print(random.randint(1,3)) #大于等于1且小于等于3之间的整数
print(random.randrange(1,3)) #大于等于1且小于3之间的整数
print(random.choice([1,'a',[1,2,3]])) #从定义的列表中随机选取
print(random.sample([1,2,3,4,5],3)) #列表中元素任选一个与3两两组合
print(random.uniform(1,3)) #大于1小于3的小数
item=[1,3,5,7,9]
random.shuffle(item) #打乱item的顺序相当于洗牌
print(item)
生成随机验证码
import random
def make_code(n=5):
res=''
for i in range(n):
s1=str(random.randint(0,9))
s2=chr(random.randint(65,90))
res+=random.choice([s1,s2])
return res
print(make_code(10))
d、打印进度条
def progress(percent,width=50):
if percent > 1:
percent=1 #防止显示百分数超过100%
show_str=('[%%-%ds]' %width) %(int(width*percent) * '#')
print('\r%s %d%%' %(show_str,int(100*percent)),end='')
import time
recv_size=0
total_size=1111111
while recv_size < total_size:
time.sleep(0.1)
recv_size+=8096
percent=recv_size / total_size
progress(percent)
#
print('[%-30s]'%'#') # %-50s, -左对齐, 50宽度为50不够空格补
print(('[%%-%ds]'%width)%'#') #第一个百分号取消了第二个百分号的特殊含义
num=30
print('%s%%' %num) #30%
e、shutil模块
压缩
import shutil
import time
ret = shutil.make_archive(
"day15_bak_%s" %time.strftime('%Y-%m-%d'),
'gztar',
root_dir=r'D:\code\SH_fullstack_s1\day15'
)
解压缩
import tarfile
t=tarfile.open('day15_bak_2018-04-08.tar.gz','r')
t.extractall(r'D:\code\SH_fullstack_s1\day16\解包目录')
t.close()
f、sys模块
sys.argv
sys.path
模块内部的一般格式:
import 放在一起
from import放在一起
全局变量的定义
功能函数的定义
if __name__==’__main__’:
func()