python中常用模块的介绍自取。

python小白集中营

一,time模块与datetime模块

1.1time 模块

时间的三种格式:

1,时间戳:秒数=>用于时间计算:

# 浮点型
start=time.time()
print(start,type(start))

结果显示:

1596092716.0356612 <class 'float'>

2,格式化的字符串=>用于显示给人看

# str型
res=time.strftime("%Y-%m-%d %H:%S:%M %p")
res=time.strftime("%Y-%m-%d %X")
print(res,type(res))

结果显示:

2020-07-30 15:05:16 <class 'str'>

3,结构化的时间=>获取时间的某一部分:

# time.struct_time 型
start=time.time()
print(start,type(start))
res = time.localtime()
res1 = time.gmtime()

print(res,type(res))
print(res.tm_year)

print(res)
print(res1)

结果显示:

time.struct_time(tm_year=2020, tm_mon=7, tm_mday=30, tm_hour=15, tm_min=5, tm_sec=16, tm_wday=3, tm_yday=212, tm_isdst=0) <class 'time.struct_time'>
2020

time.struct_time(tm_year=2020, tm_mon=7, tm_mday=30, tm_hour=15, tm_min=5, tm_sec=16, tm_wday=3, tm_yday=212, tm_isdst=0)

time.struct_time(tm_year=2020, tm_mon=7, tm_mday=30, tm_hour=7, tm_min=5, tm_sec=16, tm_wday=3, tm_yday=212, tm_isdst=0)

三种类型转换示意图

在这里插入图片描述

1.2 time模块 时间转换

一,时间戳—》格式化的字符串

代码示意:

struct_time=time.localtime(3333.3)
res=time.strftime("%Y:%m",struct_time)
print(res)

结果:

1970:01  #时间是从1970年的1月1日0时0分0秒开始计算的

二,格式化的字符串—》时间戳

代码示意:

struct_time=time.strptime("2017-07-03 11:11:11","%Y-%m-%d %H:%M:%S")
res=time.mktime(struct_time)
print(res)

结果:

1499051471.0 #时间是从1970年的1月1日0时0分0秒开始计算的

三,ctime,asctime

代码示意:

print(time.ctime(3333.3))
print(time.asctime(time.localtime(3333.3)))

结果:

Thu Jan  1 08:55:33 1970 #时间是从1970年的1月1日0时0分0秒开始计算的
Thu Jan  1 08:55:33 1970 #时间是从1970年的1月1日0时0分0秒开始计算的

四,time.sleep()

代码示意:

time.sleep(3)

结果:

#程序在执行这个语句的时候回暂停在哪里,()内填写暂停的秒数,也就是时间。

2.1 datime 模块

需要用到的一些操作实例:

#时间加减
import datetime

print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
c_time  = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) #时间替换

结果:

2020-07-30 15:22:39.656941
2020-07-30
2020-07-30 15:22:39.656941
2020-08-02 15:22:39.656941
2020-07-27 15:22:39.656941
2020-07-30 18:22:39.656941
2020-07-30 15:52:39.656941
2020-07-30 02:03:39.656941    

二,random模块

需要用到的一些操作实例:

print(random.random())#(0,1)----float    大于0且小于1之间的小数
print(random.randint(1,3))  #[1,3]    大于等于1且小于等于3之间的整数
print(random.randrange(1,3)) #[1,3)    大于等于1且小于3之间的整数
print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5]
print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合
print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716
item=[1,3,5,7,9]
random.shuffle(item) #打乱item的顺序,相当于"洗牌"
print(item)

结果一:

0.9532292734481836
2
2
23
[1, [4, 5]]
1.0402486794042074
[1, 3, 5, 7, 9]

结果一:

0.24898821184452713
1
1
23
[[4, 5], 1]
1.7040261265527323
[5, 3, 1, 7, 9]

随机验证码:

程序本体与注释:

def yz(n): #有参函数,决定我们需要得到的验证码是几位的
    res=''
    for i in range(n):
        s1=str(random.randint(0,9))#数字的随机取出记住要转为str类型
        s2=chr(random.randint(65,90))#大写的英文字母类型,chr可以帮我们转换
        s3=chr(random.randint(97,122))#小写的英文字母类型,chr可以帮我们转换
        res+=random.choice([s1,s2,s3])#在这三个溢出循环出的值中随机取一个
    return res
print(yz(4))
print(yz(6))
print(yz(8))

结果展示:

n3X3
5ErBt7
x6pohG28

三,os模块

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的大小

我们常用的方法有什么:

#当前文件目录
print(__file__)
#上一级文件目录
print(os.path.abspath(__file__))

#文件路径拼接
res=os.path.join('a','b','c','aaa.josn')
print(res)

#上一级文件目录的上一级文件目录
# 方法一(我们一般现在多数使用的就是这个方法)
print(os.path.dirname(os.path.dirname(__file__)))

# 方法二(有应用场景,但是我们现在不怎么使用,以后可以在架构中使用)
res=os.path.join(__file__
                 ,'..',
                 '..')
# 需要搭配 normpath使用
print(res)
print(os.path.normpath(res))

运行结果:

E:\Python3.8.3\python38.exe "E:/code/s15-day21/3. os模块.py"
E:/code/s15-day21/3. os模块.py
E:\code\s15-day21\3. os模块.py
a\b\c\aaa.josn
E:/code
E:/code/s15-day21/3. os模块.py\..\..
E:\code

四,subprocess模块

import subprocess
obj = subprocess.Popen("blak", shell=True,"输入cmd端口代码"
                       stdout=subprocess.PIPE,#如果运行正确的话在这个里面调
                       stderr=subprocess.PIPE,#如果运行错误的话在这个里面调
                       )
res1=obj.stdout.read()
res2=obj.stderr.read()
# print(res1.decode('gbk'))
print(res2.decode('gbk'))

五,sys模块

sys模块我们可能会使用到的一些.功能:

sys.argv           #命令行参数List,第一个元素是程序本身路径
sys.exit(n)        #退出程序,正常退出时exit(0)
sys.version        #获取Python解释程序的版本信息
sys.maxint         #最大的Int值
sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       #返回操作系统平台名称
#通常我们现在使用到的就是
sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
#加一些我们程序的环境变量给他

拷贝功能:

import sys
import os

# src_file=sys.argv[1]
# dst_file=sys.argv[2]

src_file=input('请输入源文件地址:').strip()
dst_file=input('请输入目标文件地址:').strip()
if os.path.exists(src_file):
    with open(src_file,mode='rb') as f1,open(dst_file,mode='wb') as f2:
        for a in f1:
            f2.write(a)
print('源文件啊不存在。')

#注释掉的两句话是因为需要在cmd环境下运行的,我们只需要在cmd中运行
#然后我们在后面输入上我们需要输入的 源文件地址"源文件地址" "目标文件地址" 两个文件之间用空格隔开

六,打印进度条

打印进度条代码简单无脑示例一:

import time
print("[#               ]",end='')
time.sleep(0.3)
print("\r[##              ]",end='')
time.sleep(0.3)
print("\r[###             ]",end='')
time.sleep(0.3)
print("\r[####            ]",end='')

结果:

自行运行看结果

打印进度条代码二:

import time  #导入时间模块
#我们将运行的代码放进函数中,因为我们以后可能很多地方都可能用到这个功能。
def progress(percent):
    if percent > 1:#重点用处是判断大小要是文件大小是1025,下载第二次很可能就会变成199%所以我们要判断是不是大于1,大于1 就直接变成1就不会超过100%了
        percent=1
    print("\r[%-50s] %d%%" % ("#"*int(50*percent),int(100 * percent)),end='')

total_size = 102400#设置文件大小
recv_size = 0 #我们下载的初始值大小一定要为0
while recv_size < total_size:  #判断我们下载的完成进度。
    # 每次下载1024
    time.sleep(0.3)#模拟下载的时间延时
    recv_size+=1024 #模拟下载的字节速度
    percent = recv_size / total_size #我们不能取证,因为肯定是小于1的取整的话就是0了
    progress(percent) #导入到函数中

结果:

自行运行看结果

posted @ 2020-07-30 16:30  Orange-ONE  阅读(199)  评论(0)    收藏  举报