Python常用模块学习 - time、datetime、os、sys、random、shutil

2024-01-04 22:58

本文主要是介绍Python常用模块学习 - time、datetime、os、sys、random、shutil,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、time模块:与时间相关功能

二、datetime 模块:时间处理模块

三、random:随机数模块

3-1 random - 生成随机整形和字符,指定位数

3-1 random + string - 生产随机整形+字符,随机位数

四、sys 模块:python解释器系统相关模块,多用于脚本编写

4-1 sys模块实例 - 打印进度条

五、shutil 模块:简化文件操作(文件的高级操作)

5-1  压缩包处理 - zipfile 压缩、解压缩

5-2 压缩包处理 -  tarfile 压缩、解压缩

六、os模块:与操作系统进行交互的接口模块

6-1 os 下常用函数

6-2 os.path 常用函数

6-3 os 的路径处理

6-4 os.path 获取文件元数据
————————————————
版权声明:本文为CSDN博主「林司逾」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33961117/article/details/82426287

一、time模块:与时间相关功能
'''
time模块:与时间相关的功能三种时间类型:1.时间戳(timestamp):从1970-01-01 到现在的秒数,用于取时间差time.time():用来计算时间间隔,返回浮点型2.本地时间(localtime):计算机当前所在位置的时间time.localtime():返回结构化时间3.世界协调时间(UTC)time.gmtime():返回结构化时间常用方法总结:1.时间戳:time.time()应用:用来计算时间间隔2.结构化时间:time.localtime() time.gtime()应用:1.单独获取当前时间的任意部分2.用来时间戳与格式化输出时间之间的转换3.格式化的字符串形式:time.strftime('%Y-%m-%d')应用:方便的取出格式化字符串形式的时间,用来显示datetime模块 vs time模块1.日期计算比time模块方便datetime.datetime.now()+datetime.timedelta(days=3)2.时间戳转换成字符串日期时间datetime.datetime.fromtimestamp(123123123)
'''import timeprint(time.time())
# 1536136291.5491552print(time.strftime('%Y-%m-%d %X'))
# 2018-09-05 16:31:31print(time.localtime())
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=5, tm_hour=16, tm_min=31, tm_sec=31, tm_wday=2, tm_yday=248, tm_isdst=0)print(time.gmtime())
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=5, tm_hour=8, tm_min=31, tm_sec=31, tm_wday=2, tm_yday=248, tm_isdst=0)# 格式化输出日期
print(time.strftime('%Y-%m-%d %X'))
# 2018-09-05 16:31:31# 将格式化字符串的时间转换为结构化时间
print(time.strptime("30 Nov 00", "%d %b %y"))
# time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)# 时间戳转结构化,参数为秒数,即1970年01-01过参数秒的结构化时间输出
print(time.localtime(10))
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=10, tm_wday=3, tm_yday=1, tm_isdst=0)# 结构化转时间戳
print(time.mktime(time.localtime()))
# 1536136291.0# 当前进程睡眠一段时间,单位为秒 time.sleep()
time.sleep(2)# 返回 星期英文简写 月 日 时间 年(Thu Aug  9 09:11:42 2018)
print(time.asctime())
# Wed Sep  5 16:31:33 2018
print(time.ctime())
# Wed Sep  5 16:31:33 2018'''
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%M 分钟数(00=59)
%m 月份(01-12)
%D 08/09/18 本地相应的日期表示
%d 月内中的一天(0-31)
%x 本地相应的日期表示
%X 本地相应的时间表示
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%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)星期一为星期的开始
%Z 当前时区的名称
%% %号本身
'''
二、datetime 模块:时间处理模块
# 比time方便清晰的时间计算。例:显示三天后的时间格式化输出
import datetime# # 获取时间 获取当时时间,返回格式化字符时间
print(datetime.datetime.now())
# >>> 2018-09-05 16:37:11.811998
print(datetime.datetime.today())
# >>> 2018-09-05 16:37:11.811998
#
# # 单独获取某个时间 年 月
d = datetime.datetime.now()
print(d.year)  # >>> 2018
print(d.month)  # >>> 9
#
# # 将int转或成格式时间
d1 = datetime.datetime(2018, 8, 9, 10)
print(d1)  # >>> 2018-08-09 10:00:00# 计算两个时间的差值 只能- 不能+
print(d - d1)  # >>>27 days, 6:37:11.811998# 替换某个时间
print(d.replace(year=2020))  # >>> 2020-09-05 16:37:11.811998# 表示时间差的模块 timedelta
d2 = datetime.timedelta(days=1)
d3 = datetime.timedelta(weeks=1)
print(d2)  # 1 day, 0:00:00
print(d3 - d2)  # 6 days, 0:00:00
# timedelta 时间差可以和一个datetime 进行加减
print(d + d3)  # 2018-09-12 16:39:23.733509
a = datetime.datetime.now() + datetime.timedelta(days=3)
print(a)  # 2018-09-08 16:39:23.733509b = datetime.datetime.fromtimestamp(123123123)
# 时间戳转换成字符串日期时间
print(b)  # 1973-11-26 08:52:03
三、random:随机数模块
import random# 0-1随机浮点,不包含1
print(random.random())
# 0.5685792329553742# a-b 随机整数,包含头尾
print(random.randint(1, 3))  # 3# a-b 随机整数,不包尾
print(random.randrange(1, 3))  # 2# 容器随机元素,包头尾
print(random.choice([1, 2, 3]))  # 2# 随机从容器中取值,取X个值,包头尾
print(random.sample([1, 2, 3], 2))  # [3, 2]# 打乱可变容器的元素顺序
l = [1, 2, 3, 4, 5, ]
random.shuffle(l)
print(l)  # [5, 2, 1, 3, 4]# a-b取浮点数,不包头尾
print(random.uniform(1, 2))  # 1.5748282541280614
3-1 random - 生成随机整形和字符,指定位数
import randomdef veri_code(i):res = ''for j in range(i):num = str(random.randint(0, 9))c = chr(random.randint(65, 90))s = random.choice([num, c])res += sreturn resprint(veri_code(4))
# 2D1A
3-1 random + string - 生产随机整形+字符,随机位数
import random,string# 随机生成5-15位数的字符串
range_token = ''.join(random.sample(string.ascii_letters + string.digits, random.randint(5, 15)))
# 1LDC5G四、sys 模块:python解释器系统相关模块,多用于脚本编写
'''
sys python解释器系统相关模块,多用于脚本的编写1 sys.argv           命令行参数List,第一个元素是程序本身路径2 sys.exit(n)        退出程序,正常退出时exit(0)3 sys.version        获取Python解释程序的版本信息4 sys.maxint         最大的Int值5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值6 sys.platform       返回操作系统平台名称
'''
4-1 sys模块实例 - 打印进度条
import time# print(("%%-%ds" %(30)) % '*')def progress(percent, width=30):# print(('\r[%% -%ss]'% width)%('*'* int(percent * width)),end='')if percent > 1:percent = 1str = ('\r[%% -%ss]' % width) % ('*' * int(percent * width))print(str + '%d%%' % (percent * 100), end='')# progress(0.5)file_size = 1024
get_size = 0
while get_size < file_size:time.sleep(0.5)  # 模拟数据的网络延迟get_size += 100p = get_size / file_size# print(p)progress(p)五、shutil 模块:简化文件操作(文件的高级操作)
import shutil# shutil.copyfileobj(fsrc, fdst[, length])
# 将文件内容拷贝到另一个文件中
shutil.copyfileobj(open('old.xml', 'r'), open('new.xml', 'w'))# shutil.copyfile(src, dst) 拷贝文件
shutil.copyfile('f1.log', 'f2.log')  # 目标文件无需存在# shutil.copymode(src,dst) 仅拷贝权限。(内容,组,用户都不变)
shutil.copymode('f1.log', 'f2.log')  # 目标文件必须存在# shutil.copystat() 拷贝状态信息 包括:mode bits, atime, mtime, flags
shutil.copystat('f1.log', 'f2.log')  # 目标文件必须存在# shutil.copy() 拷贝文件和权限
shutil.copy('f1.log', 'f2.log')# shutil.copy2()拷贝文件和状态信息
shutil.copy2('f1.log', 'f2.log')# shutil.ignore_patterns(*patterns) 无视指定特点的文件
# shutil.copytree(src, dst, symlinks=False, ignore=None) (源文件,目标文件,硬连接,忽略)
# 递归的去拷贝文件夹
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))# 目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除
shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
# 通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件# shutil.rmtree(path) 递归的去删除文件
shutil.rmtree('folder1')# shutil.move(src, dst)递归的去移动文件 同文件夹内的重命名,更改路径
shutil.move('folder1', 'folder3')# shutil.make_archive(base_name, format,...)  创建压缩包并返回文件路径,仅限:zip、tar
# /data下的文件打包放置 /tmp/目录
ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
5-1  压缩包处理 - zipfile 压缩、解压缩
# zipfile压缩解压缩
import zipfile# 压缩
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()
5-2 压缩包处理 -  tarfile 压缩、解压缩
# tarfile压缩解压缩
import tarfile# 压缩
t = tarfile.open('/tmp/egon.tar', 'w')  # 指定压缩包名,准备写入文件
t.add('/test1/a.py', arcname='a.bak')  # arcname 指定入包后的名字
t.add('/test1/b.py', arcname='b.bak')  # 指定路径写入文件
t.close()# 解压
t = tarfile.open('/tmp/egon.tar', 'r')  # 指定压缩包名,准备读取文件
t.extractall('/egon')  # 指定解压路径
t.close()六、os模块:与操作系统进行交互的接口模块
os 官方文档菜鸟教程 - os菜鸟教程 - os.path6-1 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下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
6-2 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.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的大小
os.path.normpath(path) 规范path字符串形式(规范文件路径)
6-3 os 的路径处理
#方式一:推荐使用
import os,sys
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(__file__),os.pardir, #上一级os.pardir,os.pardir))
# 将路径载入环境变量中
sys.path.insert(0,possible_topdir)#方式二:不推荐使用
path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 返回项目文件夹
6-4 os.path 获取文件元数据
import os
import timefile='/root/runoob.txt' # 文件路径os.path.getsize(file) # 输出文件大小(字节为单位)
# 3669
os.path.getatime(file) # 输出最近访问时间
# 1539052805.5735736
os.path.getctime(file) # 输出文件创建时间
# 1539052805.5735736
os.path.getmtime(file) # 输出最近修改时间
# 1539052805.5735736
time.gmtime(os.path.getmtime(file)) # 以struct_time形式输出最近修改时间
# time.struct_time(tm_year=2018, tm_mon=10, tm_mday=9, tm_hour=2, tm_min=40, tm_sec=5, tm_wday=1, tm_yday=282, tm_isdst=0)
time.ctime(os.path.getmtime(file))
# 'Wed Apr 28 13:10:34 2010'
os.path.normpath(file) # 规范path字符串形式————————————————
版权声明:本文为CSDN博主「林司逾」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33961117/article/details/82426287

 

这篇关于Python常用模块学习 - time、datetime、os、sys、random、shutil的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570868

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal