模块
1. 模块的定义和导入
定义:
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py对应的模块名:test)
包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件)
导入:
1 import module_name 2 import module1_name,module2_name 3 from module_alex import * 4 from module_alex import m1,m2,m3 5 from module_alex import logger as logger_alex #设置模块别名
import 本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释一遍
(import test test=‘test.py all code’)
(from test import name name=‘code’)
import module_name ---> module_name.py ---> module_name.py的路径 ---> sys.path
1 import os,sys 2 x = os.path 3 print(x) 4 x1 = "/data" 5 sys.path.append(x1) 6 print(x1) 7 ---------------输出结果------------------ 8 <module ‘ntpath‘ from ‘C:\\Users\\Administrator\\PycharmProjects\\NBcmdb\\venv\\lib\\ntpath.py‘>9 /data
导入优化
form module_test import test
模块的分类
- 标准库(内置模块)
- 开源模块(第三方模块)
- 自定义模块(实际上就是写一个python文件)
自定义模块
文件名 login.py
1 import getpass 2 _username = ‘wsy‘ 3 _password = ‘123‘ 4 5 username = input("输入用户名:") 6 password = input("输入密码:") 7 if username == _username and password == _password: 8 print("welcome user %s login"% username) 9 else: 10 print("wrong username or password!")
导入的方法
import login
方法一:copy到环境变量 base/lib/site-packages/
方法二:添加新的环境变量
2. time模块和datetime模块(时间)
time模块
2.1 time方法sleep方法
1 import time 2 start = time.time() 3 time.sleep(1) 4 #省略千行代码 5 end = time.time() 6 7 print("执行代码用时:%s" %(end - start))
计算代码执行的时间
2.2 localtime方法
import time a = time.localtime() print(a) --------------输出结果--------------- time.struct_time(tm_year=2018(年), tm_mon=1(月), tm_mday=24(日), tm_hour=11(小时), tm_min=14(分钟), tm_sec=18(秒), tm_wday=2(一周的第几天), tm_yday=24(一年的第几天), tm_isdst=0(时区))
可以通过a.tm_year 调用
print(a.tm_year,a.tm_mon,a.tm_mday) --输出结果: 2018 5 10
2.3 mktime方法
1 打印1970到现在用了多少秒 2 3 a = time.localtime() 4 print(time.mktime(a)) 5 6 7 8 ----------------结果----------------- 9 1525919616.0
2.4 strftime方法
1 打印当前时间 2 print(time.strftime("%Y-%m-%d %H:%M:%S")) 3 #%Y :年 4 #%m :月 5 #%d :日 6 #%H :时 7 #%M :分 8 #%S :秒 9 ------------------------输出结果------------------------ 10 2018-05-10 10:34:43
时间的转换
1 import time 2 3 # 将结构化时间转换成时间戳 4 print(time.mktime(time.localtime())) 5 6 # 将结构化时间转换成字符串时间 7 print(time.strftime("%Y-%m-%d",time.localtime())) 8 # 将字符串时间转换成结构化时间 9 print(time.strptime(‘2018-05-10‘,"%Y-%m-%d")) 10 print(time.strptime("2018-01-24 11:31:16","%Y-%m-%d %H:%M:%S")) 11 -------------------------输出结果-------------------------------- 12 1525920162.0 13 2018-05-10 14 time.struct_time(tm_year=2018, tm_mon=5, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=130, tm_isdst=-1) 15 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=24, tm_hour=11, tm_min=31, tm_sec=16, tm_wday=2, tm_yday=24, tm_isdst=-1)
datetime模块
1 import datetime,time 2 print(datetime.datetime.now()) #获取当前时间 3 print(datetime.datetime.now() + datetime.timedelta(-5)) # 五天前 4 print(datetime.datetime.now()+ datetime.timedelta(+5)) # 五天后 5 print(datetime.datetime.now() + datetime.timedelta(hours=3)) # 3小时后 6 print(datetime.datetime.now() + datetime.timedelta(minutes=30)) # 30分钟后 7 8 a = time.time() 9 print(a) 10 print(datetime.date.fromtimestamp(a)) # 时间戳转成年月日 11 ---------------------------------输出结果------------------------------- 12 2018-05-10 10:57:38.666891 13 2018-05-05 10:57:38.666891 14 2018-05-15 10:57:38.666891 15 2018-05-10 13:57:38.666891 16 2018-05-10 11:27:38.666891 17 1525921058.666891 18 2018-05-10
3. random模块(随机数)
3.1 方法的使用
1 import random 2 print(random.random()) # 0-1 3 print(random.randint(1,7)) # 1-7 4 print(random.randrange(3)) # 0 1 2 5 print(random.choice(‘123wsty‘)) # 随机取一个字符,可以传入字符串列表元祖 6 print(random.sample(‘heeeeaa‘,2)) # 随机取两个字符,列表形式 7 print(random.uniform(1,3)) # 指定区间浮点数 8 9 ---------------------------输出结果--------------------------- 10 0.15290056806101748 11 1 12 2 13 w 14 [‘e‘, ‘a‘] 15 1.5085069390150398
3.2 实现随机数字验证码
1 import random 2 checkcode = ‘‘ 3 4 for i in range(6): 5 current = random.randint(1,9) 6 checkcode += str(current) 7 print(checkcode) 8 -----------------------输出结果------------------------- 9 897988
3.3 实现随机数字+字母验证码
1 import random 2 n = ‘‘ 3 for i in range(6): 4 a = random.randint(0, 9) 5 if a % 2 == 0: 6 tmp = chr(random.randint(65, 90)) 7 else: 8 tmp = random.randint(0, 9) 9 n += str(tmp) 10 11 print(n) 12 ------------------输出结果-------------------- 13 29SJV7
4. OS模块(系统操作)
1 print(os.getcwd()) #pwd 2 print(os.chdir("C:\\windows")) #cd 3 print(os.chdir(r"C:\windows")) #cd 4 print(os.curdir) #返回当前目录 5 print(os.pardir) #上级目录 cd .. 6 print(os.makedirs(r"D:\a\b\c\d"))#递归创建目录 mkdir –p /a/b/c/d 7 print(os.removedirs(r"D:\a\b\c\d"))#删除空目录 rmdir /a/b/c/d -p 8 print(os.mkdir(r‘D:\a‘)) #创建目录 9 print(os.rmdir(r‘D:\a‘)) #删除空目录 一层 rmdir /a/ 10 print(os.listdir(r‘D:‘)) #列出目录包含内容列表方式 11 print(os.remove()) #删除文件 12 print(os.rename()) #重命名 13 print(os.stat(r‘D:‘)) #获取目录信息 14 print(os.sep) #路径分割付 15 print(os.linesep) #行分隔符 16 print(os.environ) #查看环境变量 17 print(os.pathsep) #查看变量分隔符 18 print(os.name) #系统名 unmae 19 print(os.system(‘dir‘)) #执行系统命令 20 print(os.path.defpath) #获取路径 21 print(os.path.split(r"c:\windows"))#分开返回路径放在元祖里 22 print(os.path.dirname(r"C:\a\b\c"))#取目录 23 print(os.path.basename(r"C:\a\b\c\a.txt"))#取文件 24 print(os.path.exists(r‘c:\das‘))#判断路径是否存在 25 print(os.path.isdir(r‘c:\das‘))#判断目录是否存在 26 print(os.path.file(r‘c:\das‘))#判断文件是否存在
1 import os 2 3 path = ‘C:\\‘ 4 5 for root, dirs, files in os.walk(path): # 全部,目录,文件 6 print("Root=%s,dirs=%s,files=%s" %(root,dirs,files))
os.walk()
5. sys模块
1 import sys 2 3 print(sys.path) # 打印环境变量 4 print(sys.argv) # [显示本文件路径] 命令行参数 第一个元素是程序本身路径 5 # 6 print(len(sys.argv)) # 统计参数个数 7 print(sys.argv[0]) # 当前文件路径 8 sys.argv[2] # 传第二个参数 9 10 print(sys.version) # 获取python版本 11 12 print(sys.maxunicode) # 最大unicode值 13 print(sys.maxsize) # 最大size值 14 print(sys.platform) # 返回操作系统平台名称 15 sys.exit() # 提前退出程序
6. shutil模块
复制删除
1 import shutil 2 shutil.copy(‘filename‘, ‘test2‘) # copy方法 3 4 f1 = open(‘filename‘,encoding=‘utf-8‘) # 复制文件copyfileobj方法 5 f2 = open(‘f‘,‘w‘,encoding=‘utf-8‘) 6 shutil.copyfileobj(f1, f2) 7 8 9 shutil.copyfile(‘filename‘,‘test3‘) # 复制文件copyfile方法 10 shutil.move("test3", "test4") # 文件的移动和改名 11 shutil.copymode(‘test‘,‘test1‘) # 权限copy 12 shutil.copystat("test","test1") # 复制文件的状态 13 shutil.copy2(‘test‘,‘test1‘) # 复制文件和状态 14 shutil.copytree(‘dir1‘,‘dir2‘) # 递归复制 必须是目录 15 shutil.rmtree(‘dir1‘) # 删除目录 多个用逗号分隔
打压缩包
shutil.make_archive(‘base_name’,’format’,’root_dir’)
base_name:压缩包的文件名,也可以使压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径
format:压缩包种类,”zip”,”tar”,”bztar”,”gztar”
root_dir:要压缩的文件夹路径(默认当前目录)
owner:用户 默认当前
group:组,默认当前
logger:用于记录日志,通常是logging.Logger对象
1 import shutil 2 import os 3 dir = os.path.exists(r‘/data/‘) #判断目录是否存在 4 if dir == False: #如果不存在 5 os.makedirs(‘/data/1/2/‘) #创建目录 6 shutil.make_archive("data", "gztar", "/data/") #打成tar.gz包
解包和其他方法
unpack_archive()
功能:解包操作
格式:shutil.unpack_archive(‘归档文件路径‘,‘解包目标文件夹‘)
返回值:None
注意:文件夹不存在会新建文件夹
get_archive_formats()
功能:获取当前系统已注册的归档文件格式(后缀)
格式:shutil.get_archive_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]
get_unpack_formats()
功能:获取当前系统已经注册的解包文件格式(后缀)
格式:shutil.get_unpack_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]
原文地址:https://www.cnblogs.com/wsy1030/p/9018519.html