常见模块一

一.time与datetime模块

    在python中,通常有这几种方式来表示时间:

   #时间戳:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行"type(time.time())",返回的是                      float类型

   #格式化的时间字符串(Format String)

   #结构化的时间(struct_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

# 三种形式的时间
import time
print(time.time())   #时间戳:1539673690.3508024
print(time.strftime("%Y-%m-%d %X")) #格式化时间字符串 2018-10-16 15:08:47
print(time.localtime()) #本地时区的struct_time
print(time.gmtime())    #UTC时区的struct_time

  格式化字符串时间,结构化时间,时间戳 三者的转换关系如图

 

#localtime([secs]) #将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准
print(time.localtime(time.time()))  #将时间戳转换成当前时区的结构化时间
# gmtime([secs])  #将一个时间戳转换为0时区的struct_time。secs参数未提供,则以当前时间为准
print(time.gmtime(time.time()))
# mktime(t) : 将一个struct_time转化为时间戳。
print(time.mktime(time.localtime()))
#strftime(format[,t]):把一个代表时间的元组或者struct_time(如local_time()和gmtime()返回)转化为格式化的时间字符串,如果t未指定,将传入local_time(),如果元组中任何一个越界,ValueError的错误将会被抛出
print(time.strftime("%Y-%m-%d %X",time.localtime()))
#strptime(string[,format]):把一个格式化时间字符串转换成struct_time,实际上和strftime()是逆操作
print(time.strptime("2018-10-16 15:26:48","%Y-%m-%d %X"))

#time.struct_time(tm_year=2018,tm_mon=10,tm_mday=16,tm_hour=15,tm_min=34,tm_sec=23,tm_wday=3,tm_yday=125,tm_isdst=-1)
#在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"

#asctime([t]) 把一个表示时间的元组或者struct_time表示为这种形式:Tue Oct 16 15:42:47 2018
#如果没有参数,将会将time.localtime()作为参数传入
print(time.asctime())
#ctime([secs]) 把一个时间戳转化为time.asctime()的形式,如果参数未给或者为None的时候,将会默认time.time()为参数
print(time.ctime())  #Tue Oct 16 15:46:37 2018
time.sleep(5) # 线程推迟指定的时间运行,单位为秒

   datetime模块  

import datetime
print(datetime.datetime.now()) #2018-10-16 15:51:32.311613
print(datetime.date.fromtimestamp(time.time())) #时间戳直接转成日期格式:2018-10-16
print(datetime.datetime.now()+datetime.timedelta(3)) #2018-10-19 15:54:35.742864 当前时间+3天
print(datetime.datetime.now()+datetime.timedelta(-3)) #2018-10-13 15:55:30.991866 当前时间-3天
print(datetime.datetime.now()+datetime.timedelta(hours=3)) #2018-10-16 18:56:39.010447 当前时间+3小时
print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #2018-10-16 16:27:40.545576 当前时间+30分
c_time=datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) #时间替换

  二.random模块

import random
print(random.random())  #0-1 不包括1随机浮点数
print(random.randint(1,10)) #1-10 包括1和10 的整数
print(random.randrange(1,10)) #1-10包括1 不包括10的整数
print(random.choice([1,"323",[4,5]])) #1或者"323"或者[4,5]
print(random.sample([1,"323",[4,5]],2)) #列表元素任意2个组合
print(random.uniform(1,3)) ##大于1小于3的小数,如1.927109612082716
l=[1,5,9,8,7,56]
random.shuffle(l) ##打乱l的顺序,相当于"洗牌"
print(l)

#随机验证码 长度自定义 包括0-9 A-Z a-z
def get_auth_code(length):
    res=""
    for i in range(length):
       a=random.randint(0,9)
       b=chr(random.randint(65,90))
       c=chr(random.randint(97,122))
       s=random.choice([a,b,c])
       res+=str(s)
    return res
a=get_auth_code(5)
print(a)

  三.OS模块

     os模块是与操作系统交互的一个接口

import  os
print(os.getcwd()) #获取当前的工作目录
print(os.chdir("F:\python practice\day16")) #切换工作目录
print(os.getcwd())
print(os.curdir) #当前目录 是一个点
print(os.pardir)  #上一级目录 两个点
print(os.environ)  #系统的环境变量
print(os.system("dir"))

os.makedirs("a/b/c") # 创建目录 可用递归创建
os.mkdir("AA3") # 创建一个目录
os.removedirs("a/b/c") # 递归删除 如果没有文件就删掉 有文件则保留
os.rmdir("AA3") #删除一个目录
os.remove(r"F:\python practice\day20\test1\test1.py") # 删除文件 仅能删除文件
print(os.listdir(r"F:\python practice\day20"))  # 列出所有文件和文件夹名称
print(os.sep) # 获取当前平台的路径分隔符
print(os.linesep,end="")  # 获取当前平台换行符
# 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的大小

  四.sys模块

import sys,os
sys.argv #命令行参数List,第一个元素是程序本身的路径
sys.exit() #退出程序,正常退出时exit(0)
sys.version #获取python解释程序的版本信息
print(sys.maxsize) #最大的Int值
sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
print(sys.platform)


#指定宽度
print('[%-15s]' %'##')
print('[%-15s]' %'##')
print('[%15s]' %'###')
print('[%-15s]' %'####')

#进度条效果
""""
[#             ]
[##            ]
[###           ]
[####          ]

"""

print('%s%%' %(100)) #第二个%号代表取消第一个%的特殊意义
print('[%%-%ds]' %50) #[%-50s]
print(('[%%-%ds]' %50) %'#')
print(('[%%-%ds]' %50) %'##')
print(('[%%-%ds]' %50) %'###')

#=========实现打印进度条函数==========
import sys
import time

def progress(percent,width=50):
    if percent>=1:
        percent=1
    show_str=("[%%-%ds]" %width) %(int(width*percent)*"#")
    print("\r%s %d%%" %(show_str,int(100*percent)),file=sys.stdout,flush=True,end="")


data_size=1025
recv_size=0
if recv_size<data_size:
    time.sleep(0.1) #模拟数据的传输延迟
    recv_size+=1024 #每次收1024
    percent=recv_size/data_size  #接收的比例
    progress(percent,width=70)  #进度条的宽度70

  五.shutil模块

   

import shutil,os

# shutil.copyfileobj(fsrc,fdst,length) #将文件内容拷贝到另一个文件中
shutil.copyfileobj(open("a.txt","r"),open("b.txt","w"))

# shutil.copyfile(src,dst) #仅拷贝权限。内容、组、用户均不变
shutil.copyfile("f1.log","f2.log") #目标文件无需存在

#shutil.copy(src,dst)  #拷贝文件和权限
shutil.copy("f1.log","f2.log")

#shutil.copy2(src,dst) #拷贝文件和状态信息
shutil.copy2("f1.log","f2.log")

#shutil.copytree(src, dst, symlinks=False, ignore=None) #递归的去拷贝文件夹
shutil.copytree(r"F:\python practice\day20\test1","test2",symlinks=True,ignore=shutil.ignore_patterns("*.pyc","tmp*"))

"""
通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件

"""
#shutil.rmtree(path[, ignore_errors[,onerror]]) #递归的去删除文件
shutil.rmtree(r"F:\python practice\day20\test1")

# shutil.move(src,dst)  #递归的去移动文件,它类似mv命令,其实就是重命名。
shutil.move(r"F:\python practice\day20\test2","test3")

#shutil.make_archive(base_name,format)
#创建压缩包并返回文件路径,例如:zip、tar
#base_name:压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存至当前目录,否则保存至指定路径,
#format:压缩包的种类,"zip","tar","bztar","gztar"
#root_dir:要压缩的文件夹路径(默认当前目录)
#owner:用户
#group:组,默认当前组
#logger:用于记录日志,通常是logging.Logger对象

  shutil 对压缩包的处理是调用ZipFile 和TarFile 两个模块来进行的,详细:

import zipfile
ret=shutil.make_archive("day21_bak_%s" %time.strftime("%Y-%m-%d"),"gztar",root_dir=r"F:\python practice\day20")
 
#压缩
z=zipfile.ZipFile("laxi.zip","w")
z.write("a.log")
z.write("data.data")
z.close()

#解压
z=zipfile.ZipFile("laxi.zip","r")
z.extractall(path=".")
z.close()
# 
import tarfile
# 
# 
# 解压缩
t=tarfile.open(r"day21_bak_2018-10-17.tar.gz","r")
t.extractall(r"F:\python practice\day20\解包目录")
t.close()

    

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值