模块(导入包和导入模块是不一样的)
一:定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名叫:test)
包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个_init_.py文件)
二:导入方法
A:Import module_name导入一个
B:Import module1_name,module2_name/form module_hanbinlongimport m1,m2,m3导入多个用,分来
C:Form module_hanbinlong import*导入所有(不建议使用)(因为form是把文件拿到当前来执行,容易被覆盖掉)
D:form module_hanbinlong import logger as logger_hanbinlong(相对导入,从当前路径导入 form.import)
三:import本质(路径搜索和搜索路径)
导入模块的本质就是把python解释一遍
(import test test=’test.pyall code’)
(form test import m1 m1=’code ’)
Import hanbinlong-àhanbinlong.py→hanbinlong.py的路径àsys.path
导入包的本质就是执行该包下的_init_.py文件
四:导入优化
From module_test import test
Inport sys,os
Print(os.path.dirname(os.path.dirname(os.path.abspath)))
#.abspath找抽象路径 .dirname 找目录名
五 模块的分类:
A:标准库
B:开源模块(第三方模块 )
C:自定义模块(5之前写的就是自定义模块)
标注库:
第一:time与datetime
1…Time+
.sleep()(睡眠)
.gmtime()(utc的时间 标准时间 英国当地时间)
.localtime()(当前时间utc+8时区 本地)
.mktime()(元祖的形式转换成时间戳)(与以上三个互为相反)
.strftime()(元祖的转成字符串)(strftime(‘格式’),时间元组的格式)--》‘格式化的字符串’
.strptime()(字符串转元祖)(strptime(‘格式化的字符串’,‘格式’)à元组的形式)
.asctime()(接受的参数是元组 转成字符串格式)(不输入默认为当前时间)
.ctime()(接受的参数是时间戳格式 转成字符串格式)(不输入默认为当前时间)
import time
x=time.localtime()
print(x)
print(x.tm_year)
print(time.mktime(x))
print(time.strftime('%Y-%m-%d %H-%S',x))
print(time.strptime('2018-5-26 15-58','%Y-%m-%d %H-%S' ))
print(time.asctime() )
print(time.ctime() )
2…datatime
.time()(小时分钟秒)
.datatime()(年月日小时分钟秒)(用就用这个)
.datatime.now()(获取当前时间)
.datatime.now()+datetime.timedelta(3)(当前时间+3天)
.datatime.now()+datetime.timedelta(-3)(当前时间-3天)
.datatime.now()+datetime.timedelta(hours=3)(当前时间+3小时)
同理 加减 时间天小时什么的都一样
import datetime
print(datetime.datetime.now())
print(datetime.datetime.now()+datetime.timedelta(3))
print(datetime.datetime.now()+datetime.timedelta(-3))
第二:random(随机)模块
import random#单词意思是随机 print(random.random())#随机一个0-1的小数 print(random.randint(1,3))#随机1-3的整数[1,3] print(random.randrange(1,3))#[1,3)顾头不顾尾 print(random.choice('hanbinlong'))#随机取一个字符串 print(random.sample('hanbinlong',2))#随机取两个 字符 print(random.uniform(1,3))#随机一个1-3之间的小数 i=[1,2,3,4,5,6] random.shuffle(i)#洗牌 打乱顺序 print(i)
随机一个验证码
import random
checkcode=''#定一个空 for i in range(4):#四位数密码所以循环四次 a=random.randint(0,3)#从0-3随机一个数 if a==i:#如果第i次正好与随机的数相等 tmp=chr(random.randint(65,90))#从A-Z随机一个数(这里是利用了ASCII码) else:
tmp=random.randint(0,9)#从0-9随机一个数 checkcode +=str(tmp)#用str转换下数字 print(checkcode )
第三:os模块
__author__ = '问安' import os print(os.getcwd())#查看当前操作目录 os.chdir('c:\\users')#更改路径 要用\\避免转义 # 相当于(r'c:\users')建议用这个 print(os.getcwd()) os.curdir#返回当前目录 os.pardir #返回上一级目录 os.makedirs(r'c:\a\b\c\d')#递归的创建一个目录 位置是c:\a\b\c\d os.removedirs(r'c:\a\b\c\d') #递归删除此目录 # (到哪了若是空文件夹就删除 不是空文件夹就留着 这就是为c盘没删的原因) #os.mkdir(r'd:\a')#只能一个一个的建立文件夹 #os.mkdir(r'd:\a\b') #os.rmdir(r'd:\a\b')#只能一个一个的删除文件夹 这一次删除b print(os.listdir('.'))#显示当前所有的目录 print(os.listdir('..'))#显示上一级的全部目录 os.remove()#()中输入路径 删除路径 os.rename('oldname','newname')#新文件目录覆盖旧文件目录 os.stat('path/filename') #获取文件/目录信息 os.sep # 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep # 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n" os.environ # 获取系统环境变量 字典方式 os.pathsep # 输出用于分割文件路径的字符串 os.name # 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") #dir(目录) 运行shell命令,直接显示 os.path.abspath(path) #获取path文件的绝对路径 os.path.split('c:\\a\\b\\c','a.test') # c:\\a\\b\\c将分割成目录和文件名二元组返回 os.path.dirname(r'c:\a\b\c\a.test') #取 r'c:\a\b\c\a.test'的目录。其实就是os.path.split(r'c:\a\b\c\a.test'的第一个元素 os.path.basename(r'c:\a\b\c\a.test') # 返回r'c:\a\b\c\a.test'最后的文件名。如何r'c:\a\b\c\a.test'以/或\结尾,那么就会返回空值。 # 即os.path.split(path)的第二个元素 os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) # 如果path是绝对路径,返回True os.path.isfile(path)# 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) #如果path是一个存在的目录,则返回True。否则返回False os.path.join(r'c:',r'\a.txt') # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 # win有问题 Linux 没问题 查一查 os.path.getatime(path) #返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间