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下为"
",Linux下为"
"
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.3python38.exe "E:/code/s15-day21/3. os模块.py"
E:/code/s15-day21/3. os模块.py
E:codes15-day213. os模块.py
acaaa.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("
[## ]",end='')
time.sleep(0.3)
print("
[### ]",end='')
time.sleep(0.3)
print("
[#### ]",end='')
结果:
自行运行看结果
打印进度条代码二:
import time #导入时间模块
#我们将运行的代码放进函数中,因为我们以后可能很多地方都可能用到这个功能。
def progress(percent):
if percent > 1:#重点用处是判断大小要是文件大小是1025,下载第二次很可能就会变成199%所以我们要判断是不是大于1,大于1 就直接变成1就不会超过100%了
percent=1
print("
[%-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) #导入到函数中
结果:
自行运行看结果