广告
返回顶部
首页 > 资讯 > 后端开发 > Python >常用模块random,time,os,s
  • 854
分享到

常用模块random,time,os,s

模块常用random 2023-01-30 22:01:54 854人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

  取随机数的模块 #导入random模块 import random #取随机小数: r = random.random() #取大于零且小于一之间的小数 print(r) #0.7028485217376959 r

  取随机数的模块

#导入random模块
import random

#取随机小数:
r = random.random()     #取大于零且小于一之间的小数
print(r)    #0.7028485217376959
r = random.unifORM(1,2)   #取大于一且小于二之间的小数
print(r)      #1.2376900963409765

#取随机整数
r = random.randint(2,8) #取大于二且小于八之间的整数
print(r)      #7
r = random.randrange(2,8,2) #取大于等于二且小于十之间的整数,每两个取一个
print(r)      #6

#随机选择一个返回
r = random.choice(["a","123",["dasd"],"das"])   #123
print(r)
#随机选择多个返回,返回的个数为函数的第二个参数
r = random.sample(["a","123",["dasd"],"das"],2) #['123', 'a']
print(r)

#打乱列表顺序
item = [1,3,5,7,9]
r = random.shuffle(item)  #只打乱,无返回值
print(r)
print(item)

 

练习题,随机生成大小写数字的验证码

def func(x=6,alpha=True):
    s = ""
    for i in range(x):
        num = str(random.randint(0,9))
        if alpha:
            alpha_upper = chr(random.randint(65,90))
            alpha_lower = chr(random.randint(97, 122))
            num = random.choice([num,alpha_lower,alpha_upper])
        s += num
    return s

print(func(4,alpha=False))
print(func())
验证码

 

  表示时间的三种方式

    在python中,通常有这三种方式来表示时间:时间戳,元组(struct_time),格式化的时间字符串:

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

      (2)格式化的时间字符串(Format String): "1999-12-16"

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

Python中时间日期格式化符号:
python中时间日期格式化符号:

 

       (3)元组(strict_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,是否是夏令时)

索引(index) 属性(Attribute) 值(Values)
0 tm_year(年) 2018
1

tm_mon(月)

1-12
2 tm_mday(日) 1-31
3 tm_hour(时) 0-23
4 tm_min(分) 0-59
5 tm_sec(秒) 0-60
6 tm_wday(deekday) 0-6(0表示周一)
7 tm_yday(一年中的第几天) 1-366
8 tm_isdst(是否是夏令时) 默认为0

表示时间的几种格式:

#导入时间模块
import time

# time.sleep(3) #程序走到这儿会等待3s钟

# 时间戳时间   浮点型数据类型,以s为单位
t = time.time()     #1534752249.0591378
print(t)

#格式化时间
print(time.strftime("%Y-%m-%d %H:%M:%S"))  #strftime =  str format time
print(time.strftime('%c'))      #国外时间格式

# 结构化时间
# 时间元组,localtime将一个时间戳转换成当时时区的struct_time
struct_time = time.localtime()  # 北京时间
print(struct_time)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#    tm_hour=16, tm_min=9, tm_sec=8, tm_wday=0, tm_yday=232, tm_isdst=0)

 

小结:时间戳是计算机能够识别的时间,时间字符串是人能够看懂的时间,元组则是用来操作时间的

几种格式之间的转换

#时间戳时间转换成字符串时间
#获取当前时间戳
t = time.time()
print(t)    #1534753176.4760094
# 时间戳转换成结构化时间
ti = time.localtime(t)
print(ti)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#       tm_hour=16, tm_min=19, tm_sec=36, tm_wday=0, tm_yday=232, tm_isdst=0)
# 结构化时间转换成字符串时间
sti = time.strftime("%Y-%m-%d %H:%M:%S",ti)
print(sti)  #2018-08-20 16:22:06



# 字符串时间转换成时间戳时间
t  = "2018-08-20 16:22:06"
#字符串时间转换成结构化时间
st = time.strptime(t,"%Y-%m-%d %H:%M:%S")
print(st)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#        tm_hour=16, tm_min=22, tm_sec=6, tm_wday=0, tm_yday=232, tm_isdst=-1)
#结构化时间转换成时间戳
ti = time.mktime(st)
print(ti)       #1534753326.0

 

 练习:

import time
ti_old = "2018-8-19 22:10:8"
ti_new = "2018-8-20 16:34:3"
true_time=time.mktime(time.strptime(ti_old,'%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime(ti_new,'%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                       struct_time.tm_mday-1,struct_time.tm_hour,
                                       struct_time.tm_min,struct_time.tm_sec))
#过去了0年0月0天18小时23分钟55秒
计算时间差

 

 

  sys模块时与python解释器交互的一个接口

import sys


print(sys.argv)     #['D:/Learn/day18/1.1.py']  程序本身的路径

for i in range(0,9):
    print(i)    #0
    sys.exit()  #遇到sys.exit()  退出程序,正常退出时exit(0),错误退出sys.exit(1)

print(sys.version)    #获取Python解释程序的版本信息
#3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

print(sys.path) #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
#"C:\Program Files\python36\python.exe" D:/Learn/day18/1.1.py
#['D:\\Learn\\day18', 'D:\\Learn', 'C:\\Program Files\\Python36\\python36.zip',
# 'C:\\Program Files\\Python36\\DLLs', 'C:\\Program Files\\Python36\\lib',
# 'C:\\Program Files\\Python36', 'C:\\Program Files\\Python36\\lib\\site-packages',
# 'E:\\PyCharm\\PyCharm 2018.1.3\\helpers\\pycharm_matplotlib_backend']

print(sys.platform)     #win32  返回操作系统平台名称

 sys.argv登录验证:

# sys.argv 登录验证
import sys
name = sys.argv[1]      #sys.argv[0]的内容是文件的路径
passWord = sys.argv[2]
# print(sys.argv)
if name == 'mark' and password == '123':
    print('登录成功')
else:
    sys.exit()
sys.argv

 在命令行模式下 输入 python + 文件夹的位置 py文件后面可以输入字符串,以空格相隔

 

 

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

import os

os.makedirs("name1/name2/name3")  #可生成多层递归目录
os.mkdir("name1")    #生成单级目录;相当于shell中mkdir dirname
os.rmdir("D:/Learn/day18/name1")  #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.removedirs("D:/Learn/day18/name1")   #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.listdir("D:/Learn/day18/name1")    #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove("name1")  #删除一个文件
os.rename("oldname","newname")  #重命名文件/目录
os.stat('path/filename')  #获取文件/目录信息

os.system("bash command")  #运行shell命令,直接显示
os.popen("bash command.read()")  #运行shell命令,获取执行结果
os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  #改变当前脚本工作目录;相当于shell下cd

 

# os.path
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第二个元素
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的大小

 

 

 

  什么叫序列化 -----将原本的字典丶列表等内容转换成一个字符串的过程就叫做序列化

  为什么要把其它数据类型转换成字符串呢? 因为能够在网络上传输的只能是bytes,能够存储在文件里的也只有bytes和str

  序列化的目的

  1.丶以某种存储形式使自定义对象持久化

  2丶将对象从一个地方传递到另一个地方

  3丶使程序更具维护性.

  

 

   1丶JSON

    json模块提供了四个功能:dumps丶dump丶loads丶load

 dumps和loads是在内存中做数据转换

  dumps :将数据类型转成字符串序列化

  loads:字符串转成数据类型 反序列化

 dump和load是直接将数据类型写入文件,直接从文件中读出数据类型

  dump:数据类型写入文件序列化

  load :文件读出数据类型 反序列化

import json
dic = {'key':'value','key2':'value2'}
ret = json.dumps(dic)   #序列化,将字典转换成字符串
print(dic,type(dic))
print(ret,type(ret))
#注意,json转换完的字符串类型的字典中的字符串是由""表示的
res = json.loads(ret)   #反序列化:将一个字符串格式的字典转换成字典格式
print(res,type(res))
loads和dumps
# dump:
f = open('json_file','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f)    ##dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
f.close()
#load:
f = open('json_file')
dic2 = json.load(f)
f.close()
print(type(dic2),dic2)
dump和load

 

 json在所有语言之间都通用,json序列化的数据在python上序列化了,拿在java中也可以反序列化

能够处理的数据类型是非常有限的"字符串 列表 字典 数字

字典中的key只能是字符串

import json
data = {'username':['李华','二愣子'],'sex':'male','age':16}
json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
print(json_dic2)
#separators 分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就
#       是(‘,’,’:’);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。 
#indent 应该是一个非负的整型,如果是0就是顶格分行显示,如果为空就是一行最紧凑显示,
#       否则会换行且按照indent的数值显示前面的空白分行显示,这样打印出来的json数据也叫pretty-printed json
#sort_keys 将数据根据keys的值进行排序
#ensure_ascii 当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时
#       将ensure_ascii设置为False即可,此时存入json的中文即可正常显示。
json的格式化输出

 

   2.pickle

    json和pickle都是用于序列化的两个模块

      json用于字符串和python数据类型间进行转换

      pickle用于python特有的类型和python的数据类型间进行转换

   pickle模块也提供了四个功能:

    dumps丶dump(序列化,存)

    loads(反序列化,读)

    load(不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)

 

import pickle

dic = {(1,2,3):{'a','b'},1:'abc'}
str_dic = pickle.dumps(dic)
print(str_dic)      #一串二进制内容

dic2 = pickle.loads(str_dic)
print(dic2)     #字典{(1, 2, 3): {'a', 'b'}, 1: 'abc'}

import time
struct_time  = time.localtime(1000000000)
print(struct_time)      #time.struct_time(tm_year=2001,......
f = open('pickle_file','wb')
pickle.dump(struct_time,f)
f.close()

f = open('pickle_file','rb')
struct_time2 = pickle.load(f)
print(struct_time2.tm_year)     #2001

 

--结束END--

本文标题: 常用模块random,time,os,s

本文链接: https://www.lsjlt.com/news/179257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 常用模块random,time,os,s
      取随机数的模块 #导入random模块 import random #取随机小数: r = random.random() #取大于零且小于一之间的小数 print(r) #0.7028485217376959 r...
    99+
    2023-01-30
    模块 常用 random
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2022-11-12
  • python3--模块collections,time,random,sys
    defaultdict(默认字典)有如下值集合[11,22,33,44,55,66,77,88,99,90......],将所有大于66的值保存至字典的第一个key中,小于66的值保存至第二个key的值中即:{'k1':大于...
    99+
    2023-01-30
    模块 collections sys
  • python的random和time模块详解
    目录一、模块概述二、模块内容三、模块导入的原理四、模块导入的方法五、random模块六、time模块(1)python表示时间的三种格式(2)常用方法:(3)时间元组、时间戳、格式化...
    99+
    2022-11-12
  • python中OS模块和time模块的示例分析
    这篇文章将为大家详细讲解有关python中OS模块和time模块的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、OS模块概述Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够...
    99+
    2023-06-15
  • Python 常用基础模块(二):os模块
    目录 一、os模块介绍二、路径介绍三、常用方法详解3.1 getcwd()方法——获取当前工作目录(字符串)3.2 listdir()方法——返回指定路径下的目录名和文件名3.3 makedi...
    99+
    2023-09-09
    python 开发语言
  • 学习python的第二十天(os模块,s
    1.os模块(功能类似操作系统与文件交互) 1.常用模块功能 1.创建文件 1.mkdir 2.移除文件 1.remove 删除指定文件 2.rmdir 删除单级空目录,若目录不为空则无法删除 3.removedirs 若目录为空,则删...
    99+
    2023-01-31
    十天 模块 python
  • python os模块常用方法
    python中的os模块可以用来编写于平台无关的一些文件系统操作。 主要的方法如下: 一些标记属性 1. os.linesep 文件中分割行的字符串 2. os.sep文件路径名的分隔符 3. os.curdir当前工作目录的字符串名称 4...
    99+
    2023-01-31
    模块 常用 方法
  • 关于Python常用模块时间模块time
    目录time简介导入模块1.时间戳2.时间元组(1)把时间戳转换为元组形式(2)元组转换为时间戳输出(3)把元组转换为格式化时间(4)把时间戳转换为格式化时间3.字符串时间(重点)(...
    99+
    2023-05-16
    Python模块 Python时间模块 Python time模块
  • python 之 os 模块的常见用法
    在Python的标准库os模块中包含普遍的操作系统功能os 模块引入的方法是: import os以下为 os 模块常见的使用方法:    1、os.getcwd 获取当前的工作目录,即程序执行的目录    2、os.name 字符串指示正...
    99+
    2023-01-31
    模块 常见 python
  • 详解Python常用标准库之os模块与shutil模块
    目录系统模块常用方法常用属性文件操作路径模块文件复制移动模块(文件操作)copyfileobj -- 复制文件(内容)copyfile -- 复制文件(内容)copymode -- ...
    99+
    2022-11-11
  • time模块的使用
      一、方法汇总: time.sleep():定时函数 time.time(): 时间戳/墙上时间 time.clock():CPU时间 time.local() / gmtime(): 把时间戳转换成时间元组结构(gmtime差l...
    99+
    2023-01-31
    模块 time
  • Python中random模块怎么用
    这篇文章给大家分享的是有关Python中random模块怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.随机取小数:import randomprint(random.runiform(a,b)...
    99+
    2023-06-22
  • Python random模块用法整理
    随机数在计算机科学领域扮演着重要的角色,用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能,本文整理了 random 模块的使用。 ...
    99+
    2023-09-02
    python random
  • Python常用标准库之os模块与shutil模块怎么使用
    本文小编为大家详细介绍“Python常用标准库之os模块与shutil模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python常用标准库之os模块与shutil模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-30
  • 基于Python os模块常用命令介绍
    1、os.name---判断现在正在实用的平台,Windows返回'nt';linux返回'posix' 2、os.getcwd()---得到当前工作的目录。 3、os.listdir()--- 4、os...
    99+
    2022-06-04
    模块 常用命令 Python
  • Python的os模块常用功能有哪些
    这篇文章主要介绍“Python的os模块常用功能有哪些”,在日常操作中,相信很多人在Python的os模块常用功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python的os模块常用功能有哪些”的疑...
    99+
    2023-06-17
  • python time模块的使用
    我们先导入必须用到的一个module>>> import time设置一个时间的格式,下面会用到>>>ISOTIMEFORMAT=’%Y-%m-%d %X’看一下当前的时间,和其他很多语言相似这是从epo...
    99+
    2023-01-31
    模块 python time
  • 模块使用:time、datetime、c
    ## time:时间 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs]) (指定时间戳下的)格林威治时间:...
    99+
    2023-01-31
    模块 time datetime
  • Python time模块怎么用
    本篇内容主要讲解“Python time模块怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python time模块怎么用”吧!在我们平常的代码中,经常需要和时间打交道。在Python中,...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作