python笔记-----模块(time,os,sys,random,shutil)

模块

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

模块的分类

  1. 标准库(内置模块)
  2. 开源模块(第三方模块)
  3. 自定义模块(实际上就是写一个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()
返回值:列表   [(后缀,解释),(后缀,解释),(后缀,解释)...]


猜你喜欢

转载自www.cnblogs.com/wsy1030/p/9018519.html