## 基本模块
一 .time
python中常用几种时间方式:
1.时间戳:从1970年1月1日零时零分零秒开始计算,time.time(),得到的是个浮点数
常用于计算时间
2.格式化字符串:time.strftime('%Y-%m-%d %H:%M%S %p')
常用于显示时间
3.结构化时间:time.localtime(),得到的struct_time分为就个元素:年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时
常用于获取时间的某一部分,如获取今天是今年的第几天 time.localtime().tm_yday
4.时间转换1
![在这里插入图片描述]()
如图,时间戳和格式化字符串不能直接转换,要通过结构化时间过渡
时间戳------------------------------------------------->结构化时间------------------------------------------------>格式化字符串
1.获取现在时间戳 time.time(),返回浮点数
2.将时间戳转化为结构化时间 time.localtime(),括号内可填入浮点数,不填默认为time.time()
3.将结构化的时间转化为格式化的字符串时间,time.strftime() 括号内输入显示的格式,及时间元组,元组由9个数字组成,(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时),时间不输默认为当前时间
时间戳---》格式化的字符串
res = time.localtime(21433412)
print(res)
res1 = time.strftime('%Y-%m-%d %X',(1970, 9, 6, 9, 43, 32, 6,249, 0))
print(res1)
反之:
格式化的字符串---》时间戳
struct_time=time.strptime("2017-07-03 11:11:11","%Y-%m-%d %H:%M:%S")
res=time.mktime(struct_time)
print(res)
5.时间转换2
![在这里插入图片描述]()
asctime([t])将一个时间元组或者struct_time格式的传入括号内,转化成Thu Jul 30 15:18:55 2020这种格式的形式,默认传入time.localtime()
ctime(secs)将时间戳(浮点数)转化成Thu Jul 30 15:18:55 2020这种格式的形式,默认传入time.time()
二.datatime
import datatime
用途:1.直接获得格式化字符串的时间(返回字符串)
datetime.datetime.now()====>2020-07-30 15:24:16.707416
2.将时间戳改成日期格式
datetime.date.fromtimestamp(1245334315)====>2009-06-18
3.当前日期加3天
datetime.datetime.now() +datetime.timedelta(3)====>2020-08-02 15:31:36.490602
4.当前日期减三天
datetime.datetime.now() +datetime.timedelta(-3)====>2020-07-27 15:32:37.887668
5.当前时间加3小时
datetime.datetime.now() +datetime.timedelta(hours = 3)====>2020-07-30 18:33:35.613554
6.当前时间加30分钟
datetime.datetime.now() +datetime.timedelta(minutes = 30)====>2020-07-30 16:04:24.822310
7.时间替换
datetime.datetime.now().replace(minute = 3,hour = 4)===>2020-07-30 04:03:27.946316
三.random
import random
random.random()-------------------随机获得(0,1)间的小数
random.randint(n,m)---------------随机获得[n,m]间的整数
random.randrange(n,m)----------随机获得[n,m)间的整数
random.choice()--------------------随机获得括号内传的数据,可以传入字符串,元组,列表
random.sample()-------------------传入2个值,第一个数据为字符串,元组,列表,集合,第二个数据为随机取值的个数
random.uniform(n,m)--------------随机获得(n,m)间的小数
random.shuffle(m)-----------------随机打乱m数据顺序,m只能是列表
应用:生成随机验证码
import random
def rand_code(n):
res = ''
for i in range(n):
s1 = chr(random.randint(65,90))
s2 = chr(random.randint(97,122))
s3 = str(random.randint(0,9))
lst = [s1,s2,s3]
res += random.choice(lst)
return res
print(rand_code(6))
四.os
import os
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即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(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
PS:
1.__file__显示的是当前文件的绝对路径
2.os.makedirs()递归生成多层目录
os.removedirs()递归删除空目录,一路向上层删除,遇到非空则停止,开始输入目录非空则报错
os.mkdir()生成单目录
os.rmdir()删除单级空目录,目录非空则报错
3.os.stat()获取的是文件或者目录的信息:
os.stat_result(st_mode=保护模式, st_ino=节点号, st_dev=驻留的设备, st_nlink= inode 的链接数, st_uid=所有者的用户ID, st_gid=所有者的组ID, st_size=普通文件以字节为单位的大小;包含等待某些特殊文件的数据, st_atime=上次访问的时间, st_mtime=最后一次修改的时间, st_ctime=由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间)
4.os.system() 运行shell命令,直接显示
5.os.environ 获取系统环境变量,返回值是字典
6.os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
7.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.getsize(path) 返回path的大小
8.os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
五.sys
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
ps:
sys.argv可以理解为一个列表,0位代表的是程序本身,后面的数值是为程序传的参数
在python程序中定义需要的参数,用sys.argv[索引]与各个参数绑定
六.subprocess
import subprocess
obj = subprocess.Popen('命令',shell = True,stdout = subprocess.PIPE,stderr = subprocess.PIPE)
res1 = obj.stdout.read()
res2 = obj.stderr.read()
print(res1.decode('gbk')
print(res2.decode('gbk')
PS:subprocess.Popen方法中,shell = True 相当于在执行shell命令,将执行正确的值放入stdout,错误的值放入stderr,执行的值未经过系统解码,故存入stdout和stderr中的都是bytes格式的二进制,整体返回的是一个对象
用res1接收执行成功返回的值,
用res2接收执行失败返回的值
显示的时候需要解码,windows系统编码格式是gbk,故解码也需要gbk格式
七.打印进度条
import time
def func(percent):
if percent >1:
percent=1
print('\r[%-50s]%d%%' % ('*' * int(50 * percent), int(percent * 100)), end='')
total_size = 1000000
get_size = 0
while get_size <total_size:
get_size+=111111
time.sleep(0.1)
percent = get_size/total_size
func(percent)