Python相关内置模块[time,os,shutil](持续更新)

一.时间模块:
1.时间戳:从1970年到现在经过的秒数
用于间隔间隔的计算

print(time.time())

2.按照某种格式显示的时间:
用于展示时间

print(time.strftime('%Y-%m-%d  %H:%M:%S:%p'))
print(time.strftime('%Y-%m-%d  %X'))
# 2020-09-15  20:54:50:PM
# 2020-09-15  20:54:50

3.结构化的时间:
用于单独获取时间的一部分

res = time.localtime()
print(res)
# time.struct_time(tm_year=2020, tm_mon=9, tm_mday=15, tm_hour=20, tm_min=54, tm_sec=50, tm_wday=1, tm_yday=259, tm_isdst=0)
print(res.tm_year)
# 2020
import datetime
print(datetime.datetime.now())# 2020-09-15 21:09:01.489389
print(datetime.datetime.now()+datetime.timedelta(days=3))  #没有年的统计单位 用day*365
# 2020-09-18 21:13:17.171830

时间格式的转换:
结构化变时间戳:

s_time = time.localtime()
print(time.mktime(s_time))

时间戳变结构化:

s_time = time.time()
print(time.localtime(s_time)) #当地的时间
print(time.gmtime(s_time))    

格式化变结构化:

s_time = time.localtime()
print(time.strptime('1992-03-03 11:11:11','%Y-%m-%d %H:%M:%S'))
# time.struct_time(tm_year=1992, tm_mon=3, tm_mday=3, tm_hour=11, tm_min=11, tm_sec=11, tm_wday=1, tm_yday=63, tm_isdst=-1)
print(time.strftime('%Y-%m-%d %H:%M:%S',s_time))
# 2020-09-16 18:59:50

需要掌握的只有一条:字符串变时间戳

# '1992-03-03 11:11:11'
struct_time = time.strptime('1992-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
print(time.mktime(struct_time)+7*86400)

了解知识

import time
time.sleep(3)
print(time.strftime('%Y-%m-%d  %H:%M:%S:%p'))# 等于
print(time.asctime())
import datetime
print(datetime.datetime.now())# 2020-09-16 19:19:38.108500
print(datetime.datetime.utcnow())# 2020-09-16 11:19:38.108500
print(datetime.datetime.fromtimestamp(333)) # 1970-01-01 08:05:33

二.随机数

import random
print(random.random()) # 0-1之间的随机数
print(random.randrange(1,100)) # 大于等于1小于100的整数
print(random.randint(1,100)) # 大于等于1小于等于100的整数
print(random.choice([2,'23',[4,5]])) # 2或者23或者[4,5]
print(random.sample([1,'23',[4,5],5],3)) # 任意三个元素的组合
print(random.uniform(1,3)) # 大于1小于3的小数
# item = [1,3,5,7,9]
# random.shuffle(item)  #打乱顺序
# print(item)

应用:
随机验证码

import random
def makecode(size):
    res = ''
    for i in range(size):
        ran_letter = chr(random.randint(65,90))
        ran_number = str(random.randint(0,9))
        res +=random.choice([ran_letter,ran_number])
     return res
print(makecode(5))

打印进度条

import time
rescv_size = 0
total_size = 33333
res = ''
def progress(persent):
    if persent >1:
        persent = 1
    res  =int(50*persent)*'#'
    print('\r[%-50s]%d%%' % (res,int(persent*100)) ,end='')
while rescv_size < total_size:
    time.sleep(0.3)
    rescv_size +=1024
    persent = rescv_size / total_size
    progress(persent)

三.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下为"\r\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的大小

四.shutil模块
高级的文件,文件夹,压缩包处理模块

import shutil
shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))  # 将文件内容拷贝到另一个文件中
shutil.copyfile('f1.log', 'f2.log') #拷贝文件 目标文件无需存在
hutil.copymode('f1.log', 'f2.log') #仅拷贝权限。内容、组、用户均不变    目标文件必须存在
shutil.copystat('f1.log', 'f2.log') #仅拷贝状态的信息,包括:mode bits, atime, mtime, flags 目标文件必须存在
shutil.copy('f1.log', 'f2.log') #拷贝文件和权限
shutil.copy2('f1.log', 'f2.log') #拷贝文件和状态信息
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
# 递归的去拷贝文件夹,目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除
shutil.rmtree('folder1') #递归的去删除文件
shutil.move('folder1', 'folder3')#递归的去移动文件,它类似mv命令,其实就是重命名
shutil.make_archive(base_name, format,...) # 创建压缩包并返回文件路径,例如:zip、tar
#  base_name: 压缩包的文件名也可以是压缩包的路径。只是文件名时,保存至当前目录,否则保存至指定路径,
#  如 data_bak                       =>保存至当前路径
#  如:/tmp/data_bak =>保存至/tmp/
#  format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
#  root_dir: 要压缩的文件夹路径(默认当前目录)
#  owner: 用户,默认当前用户
#  group: 组,默认当前组
#  logger: 用于记录日志,通常是logging.Logger对象
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年往事心中绕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值