摘要:时间模块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. 细说addEventListener与事件捕获

    细说addEventListener与事件捕获.事件冒泡(一)addEventListener的基本用法 在复杂的项目开发中,javascript和html的解耦变得至关重要,我们被推荐使用事件动态绑 ...

  2. 作为开发人员,这四类Code Review方法你都知道吗?

    本文翻译自:https://dzone.com/articles/4-types-of-code-reviews-any-professional-developer 转载请注明出处:葡萄城官网,葡萄 ...

  3. 使用ip开头的工具,而不是只会ifconfig

    结论: 1.使用ip 开头的工具,比ifconfig显示的信息更多,并且支持的功能更强大. 2.常用的功能有: 显示接口基本信息: ip link show dev eth0 设置端口up/down: ...

  4. java线程介绍

    文章讲解要点 1.线程创建几种方式2.线程常见设置方法,包括优先级.优先级休眠.停止等3.多线程间的数据交互与锁机制4.项目源码下载   线程介绍.png 一.线程创建方式 常见的线程创建方法以下三种 ...

  5. Linux简单配置SendMail发送邮件

    本文简单整理了一下如何在Linux服务器上安装.配置SendMail发送邮件的步骤,此文不是配置邮件服务器,具体测试环境为CentOS Linux release 7.2.1511 (Core) ,如 ...

  6. Ehcache入门经典:第一篇

    ehcache主要是轻量级的缓存实现 ehcache.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  7. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

  8. Lcd(一)显示原理

    一.LCD控制原理 S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口. 类型: STN ...

  9. 宋宝华:关于Ftrace的一个完整案例【转】

    Ftrace简介 Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布. Ftr ...

  10. Linux分页机制之分页机制的演变--Linux内存管理(七)

    1 页式管理 1.1 分段机制存在的问题 分段,是指将程序所需要的内存空间大小的虚拟空间,通过映射机制映射到某个物理地址空间(映射的操作由硬件完成).分段映射机制解决了之前操作系统存在的两个问题: 地 ...