摘要:时间模块time 、随机模块random 、os模块、sys模块

一、时间模块
三种格式
时间戳时间:浮点数 单位为秒
时间戳起始时间:
1970.1.1 0:0:0 英国伦敦时间
1970.1.1 8:0:0 我国(东8区)
结构化时间:元组(struct_time)
格式化时间:str数据类型的 import time 1、常用方法:time.sleep(secs) 推迟指定的时间运行,单位是秒 for i in range(3):
time.sleep(1)
print(i) 2、表示时间的三种方式:时间戳(timestamp)、元组(struct_time)、格式化(str_time)的时间字符串
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
我们运行“type(time.time())”,返回的是float类型。
print(time.time()) # 1536050072.5732844(1970年1月1日00:00:00到此刻运行time.time()的时间) (2)结构化时间(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一周中第几天,一年中第几天,夏令时)
struct_time = time.localtime()
print(struct_time)
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=4, tm_hour=16, tm_min=40, tm_sec=1, tm_wday=1, tm_yday=247, tm_isdst=0) struct_time = time.gmtime() # 伦敦的时间
print(struct_time)
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=4, tm_hour=8, tm_min=40, tm_sec=1, tm_wday=1, tm_yday=247, tm_isdst=0) (3)格式化时间(Format_string):
fmt1 =time.strftime('%H:%M:%S') # 时分秒(全大写)
fmt2 =time.strftime('%Y-%m-%d') # 年月日(年可大写可小写,月日小写)
fmt3 =time.strftime('%y-%m-%d') # 年月日
fmt4 =time.strftime('%c') # 本地相应的日期表示和时间表示 print(fmt1) # 16:49:03
print(fmt2) # 2018-09-04
print(fmt3) # 18-09-04
print(fmt4) # Tue Sep 4 16:49:03 2018
    %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中时间日期格式化符号

3、几种时间格式间的转换

Timestamp ---> struct_time: localtime(转成我国的时间)、gmtime(转成伦敦时间)
struct_time ---> Timestamp: mktime Format_string ---> struct_time: strptime
struct_time ---> Format_string: strftime 例题:
1,把格式化时间2018年8月8日转成时间戳时间
str_time = '2018-8-8'
struct_time = time.strptime(str_time,'%Y-%m-%d')
print(struct_time) # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=220, tm_isdst=-1)
timestamp = time.mktime(struct_time)
print(timestamp) # 1533657600.0 2,把时间戳时间转成格式化时间
timestamp = 1500000000
struct_time = time.localtime(timestamp)
str_time = time.strftime('%Y-%m-%d',struct_time)
print(str_time) # 2017-07-14 3,写函数,计算本月1号的时间戳时间
通过我拿到的这个时间,能迅速的知道我现在所在时间的年 月
def get_timestamp():
str_time = time.strftime('%Y-%m-1')
struct_time = time.strptime(str_time,'%Y-%m-%d')
timestamp = time.mktime(struct_time)
return timestamp
ret = get_timestamp()
print(ret) 二、随机模块
import random
1、取随机小数 *
print(random.random()) # 大于0且小于1之间的小数(0,1)
print(random.uniform(1,3)) # 大于n且小于m之间的小数(n,m) 2、取随机整数 ****
print(random.randint(1,4)) # 1到4之间的整数,包括1和4, [1,4]
print(random.randrange(1,4)) # 1到4之间的整数,包括1,但是不包括4, [1,4)
print(random.randrange(1,100,2)) # 1到100之间的奇数 3、随机选择一个返回(字典和集合不可以) ****
3-1、列表:
lst = [1,2,3,4,5,('a','b'),'cc','dd']
ret = random.choice(lst)
print(ret) 3-2、元组:
tu = (1,2,3,('a','b'),[4,5],{'name':'SB'})
ret = random.choice(tu)
print(ret) 3-3、range:
ret = random.choice(range(100))
print(ret) 3-4、str
ret = random.choice('abcd')
print(ret) 4、随机选择多个元素组成一个列表并返回
4-1、列表:
lst = [1,2,3,4,5,('a','b'),'cc','dd']
ret = random.sample(lst,3)
print(ret) 4-2、元组:
tu = (1,2,3,('a','b'),[4,5],{'name':'SB'})
ret = random.sample(tu,3)
print(ret) 4-3、range:
ret = random.sample(range(100),3)
print(ret) 4-4、str
ret = random.sample('abcde',3)
print(ret) 5、乱序(在原来的基础上乱序) ***
lst = [1,2,3,4,5,('a','b'),'cc','dd']
random.shuffle(lst)
print(lst) 6、验证码
6-1、要随机生成n位数字验证码
def get_code(n=6):
code = ''
for i in range(n):
num = random.randint(0,9)
code += str(num)
return code
ret1 = get_code()
ret2 = get_code(4)
print(ret1,ret2) 6-2请你生成一个6位验证码(数字和字母)
字母的生成可以使用内置方法chr :
生成一个随机字母
65-90 A-Z:
num = random.randint(65,90)
print(chr(num)) 97-122 a-z:
num = random.randint(97,122)
print(chr(num)) def get_code(n=6):
code = ''
for i in range(n):
num = random.randint(0,9)
alpha_upper = chr(random.randint(65,90))
alpha_lower = chr(random.randint(97,122))
c = random.choice([num,alpha_upper,alpha_lower])
code += str(c)
return code
ret = get_code()
print(ret) 6-3、可以选择生成纯数字或者数字和字母混合的验证码
def get_code(n=6,alph_flag=True):
code = ''
for i in range(n):
c = random.randint(0,9)
if alph_flag:
alpha_upper = chr(random.randint(65,90))
alpha_lower = chr(random.randint(97,122))
c = random.choice([c,alpha_lower,alpha_upper])
code += str(c)
return code
ret = get_code()
# ret = get_code(6,False)
print(ret) 三、os模块:os模块是与操作系统交互的一个接口
第一部分:文件和文件夹的操作相关
1、os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.mkdir('dirname') 2、os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.makedirs('dirname1/dirname2') 3、os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.rmdir('dirname') 4、os.removedirs('dirname1/dirname2') 从右往左删,若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.removedirs('dirname1/dirname2') 5、os.remove() 删除一个文件
os.remove('a.txt') 6、os.rename("oldname","newname") 重命名文件/目录
os.rename('a.txt','b.txt') # 文件a.txt重命名未b.txt
os.rename('name1','name2') # 文件夹name1重命名未name2 7、os.listdir('path') 列出指定目录下的所有文件和子目录(只找当前的目录和文件,子目录还有其他文件也不会显示),包括隐藏文件,并以列表方式打印
ret = os.listdir('E:\PythonProject')
print(ret) # ['test.py', 'project', venv'] # 即使目录project下还有很多文件,也不会显示,只会显示project文件夹 8、os.stat('path/filename') 获取文件/目录信息
print(os.stat('E:\PythonProject\\t3.py'))
结果:
os.stat_result(st_mode=33206, st_ino=16044073672519102, st_dev=3784701186, st_nlink=1, st_uid=0, st_gid=0,
st_size=5199, st_atime=1536062346, st_mtime=1536062346, st_ctime=1536049667)
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,
在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

stat 结构说明

9、环境变量相关
# 获取当前环境下所有环境变量
os.environ # 是一个大字典 # 获取某个环境变量
os.environ.get("path")
os.getenv("path") # 设置环境变量
os.environ["TEST"] = "测试路径"
os.putenv("TEST", "测试路径")
10、os.walk()函数
第二部分:路径相关
# __file__文件中的一个内置变量,表示执行当前模块的路径。
但是:
如果当前文件包含在sys.path里面,那么,__file__返回一个相对路径!
如果当前文件不包含在sys.path里面,那么__file__返回一个绝对路径!
print(__file__) # E:/PythonProject/t1.py 0、os.path.realpath(path) 返回path的真实路径
ret = os.path.realpath("../") # 执行当前脚本的路径是 E:\\PythonProject\project\test\test.py
print(ret) # E:\\PythonProject\project
1、os.path.abspath(path) 返回path规范化的绝对路径 *****
ret1 = os.path.abspath('E:/PythonProject')
print(ret1) # E:\PythonProject 2、os.path.split(path) 将path分割成目录和文件名二元组返回
ret = os.path.split('E:\PythonProject\project')
print(ret) # ('E:\\PythonProject', 'project') 3、os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
ret1 = os.path.dirname('E:\PythonProject\project')
print(ret1) # E:\PythonProject 4、os.path.basename(path) 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
ret2 = os.path.basename('E:\PythonProject\project')
print(ret2) # project 5、os.path.join(path1,path2...) 将多个路径组合后返回(一般还配合abspath使用规范化合并的路径)
ret = os.path.join('E:/PythonProject/project','t1.py')
print(ret) # E:/PythonProject/project\t1.py
ret = os.path.abspath(ret)
print(ret) # E:\PythonProject\project\t1.py 6、os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
res1 = os.path.exists('E:\PythonProject\project')
print(res1) # True res2 = os.path.exists('E:\project\PythonProject')
print(res2) # False 7、os.path.isabs(path) 如果path是绝对路径,返回True
ret = os.path.isabs('E:\PythonProject\project')
print(ret) # True 8、os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
ret = os.path.isfile('E:\PythonProject\project\python.py')
print(ret) # True 9、os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
ret = os.path.isdir('E:\PythonProject\project')
print(ret) # True 10、os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 **
ret = os.path.getatime('E:\PythonProject\project\\t1.py')
print(ret) # 1536049139.981451 11、os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 **
ret = os.path.getmtime('E:\PythonProject\project\\t1.py')
print(ret) # 1536049139.984452 12、os.path.getsize(path) 返回path(目录或者文件)的大小 *****
size = os.path.getsize('E:\PythonProject\project')
print(size) # size = os.path.getsize('E:\PythonProject\project\\t1.py')
print(size) # 第三部分:操作系统命令
1、os.system() # 以字符串的形式来执行操作系统的命令(跟exec类似 - 以字符串的形式来执行python代码)
os.system('dir') 2、os.popen()
ret = os.popen('dir') # 以字符串的形式来执行操作系统的命令(跟eval类似 - 以字符串的形式来执行python代码 且返回结果)
print(ret.read()) 第四部分:和python程序工作目录相关:
1、os.getcwd() 获取当前工作目录(get current working dir),即当前python脚本工作的目录路径
"""test.py所在路径为:D:\Projects\Test\TestPy36"""

# cd D:\Projects\Test\TestPy36
# python test.py
import os
import pathlib # 结果
print(os.getcwd()) # D:\Projects\Test\TestPy36
print(pathlib.Path.cwd()) # D:\Projects\Test\TestPy36 ################# # cd D:\Projects\Test
# python TestPy36\test.py
import os
import pathlib # 结果
print(os.getcwd()) # D:\Projects\Test
print(pathlib.Path.cwd()) # D:\Projects\Test
2、os.chdir()  改变当前脚本工作目录(change dir);相当于shell下的cd
os.chdir("E:\PythonProject\") 四、sys模块
一个模块能否被导入,就看这个模块所在的目录在不在sys.path路径中
内置模块和第三方扩展模块都不需要我们处理sys.path就可以直接使用
自定义的模块的导入工作需要自己手动的修改sys.path 1、sys.argv:打印出执行这个py文件的路径(列表形式显示)
但是:
如果当前文件包含在sys.path里面,那么sys.argv返回一个相对路径!
如果当前文件不包含在sys.path里面,那么sys.argv返回一个绝对路径!
# test.py文件
print(sys.argv)
print(sys.argv[0]) # 执行当前模块的路径,相当于__file__
sys.argv,1,2,3 # 执行后会打印出绝对路径和1,2,3组成的列表
# argv返回的是一个列表,__file__返回的是字符串 # 使用cmd进入命令提示符,执行test.py脚本
python test.py # 结果:[test.py]
python test.py 1 2 # 结果:[test.py, 1, 2]

2、sys.path:包含输入模块的目录名列表。(即存放了所有模块的路径的一个列表)
获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

也就是说,如果import一个模块,模块的路径必须包含在sys.path列表中,如果不存在,则不能导入,但是可以自定义模块路径:
sys.path.append(“自定义的模块路径”)


3、sys.modules :查看当前内存空间中所有的模块,和这个模块的内存空间(主要在反射的时候用)
sys.modules是一个储存着所有模块的全局字典,该字典是python启动后就加载在内存中,sys.modules具有字典所拥有的一切方法。(每个py文件都相当于一个模块)

print(sys.modules)          # 以字典的形式打印所有的模块:键(模块名):值(每个模块的名空间地址)

print(sys.modules[__name__]) # __name__是当前模块名(modules中的键),modules[__name__]就是当前模块的空间地址(modules中的值)

print(sys.modules['__main__']) # 若在当前文件下运行,__name__ == '__main__'

print(dir(sys.modules[__name__])) # 查看当前模块的所有变量和方法

 

python之常用模块一(time、random、os、sys)的更多相关文章

  1. day19:常用模块(collections,time,random,os,sys)

    1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...

  2. 模块、包及常用模块(time/random/os/sys/shutil)

    一.模块 模块的本质就是一个.py 文件. 导入和调用模块: import module from module import xx from module.xx.xx import xx as re ...

  3. Python常用模块(time, datetime, random, os, sys, hashlib)

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  4. 2018-11-13-常用模块1 (time random os sys)

    1.时间模块 time 2.随机数模块 random 3.与操作系统交互模块 os 4.系统模块 sys 在我们真正开始学习之前我们先解决下面几个问题,打好学习模块的小基础,以便更好的学习模块. (1 ...

  5. 模块:time,random,os,sys

    时间模块 import time # print(time.time()) #时间戳 # print(time.strftime('%Y-%m-%d %X')) #格式化字符 # print(time ...

  6. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

  7. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  8. 常用模块random/os/sys/time/datatime/hashlib/pymysql等

    一.标准模块 1.python自带的,import random,json,os,sys,datetime,hashlib等 ①.正常按照命令:打开cmd,执行:pip install rangdom ...

  9. Python之路-python(常用模块学习)

    模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块 ...

  10. Python自动化 【第五篇】:Python基础-常用模块

    目录 模块介绍 time和datetime模块 random os sys shutil json和pickle shelve xml处理 yaml处理 configparser hashlib re ...

随机推荐

  1. 20190322-a标签、img标签、三列表、特殊字符实体、表格

    目录 1.a标签 a标签的属性 锚点 2.img标签 img标签的属性 图像热区 3.三列表 有序列表(Ordered List)     ol>li 无序列表(Unordered List)  ...

  2. Dynamics 365 POA表记录的查询

    微软动态CRM专家罗勇 ,回复313或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . PrincipalO ...

  3. 通过Excel文件快速创建页面和数据表

    在设计一个软件系统,构建过程:需求->数据表->系统开发.实际情况是需求(数据)很多来源于已经存在的文件中,客户会要求把这些数据“电子化”,这就给需求分析产生了很大的工作量: 分析这些原始 ...

  4. adb部署及使用

    一 掌握adb部署&使用方法及常用命令 1.何为adb? sdk软件开发套件software development kit apk是安卓应用安装包 adb是android sdk的一个工具, ...

  5. The account that is running SQL Server Setup does not have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the rig

    安装SQL SERVER 是规则检查提示权限问题 运行secpol.msc,没有Debug program权限,添加即可,如果已加域则要在域策略修改,或退域安装后在加域.

  6. Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh

    本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...

  7. c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息

    网络编程 UDP 用if_nameindex和ioctl取得主机网络信息 getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数. 1,if_nameindex ...

  8. User Agent 大全

    一.基础知识篇: Http Header之User-Agent User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头 ...

  9. web 项目运用通用的xml配置

    jdk10的转换: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncod ...

  10. OLW (Open Live Writer)安装代码高亮插件方法(简明)

    1.首先下载OLW代码高亮插件,请点击--->OLW代码高亮插件 2.在你安装OLW的目录下(顺便说一下默认的安装目录为C:\Users\你的用户名\AppData\Local\OpenLive ...