首页 > 其他分享 >常用的内置模块

常用的内置模块

时间:2023-09-21 21:34:28浏览次数:31  
标签:常用 内置 datetime tm 模块 time print 2017 os

时间模块

这个模块我们就比较熟悉了,之前学的时候调用过内部的几个功能

三种时间表现形式

1.时间戳(timestamp)

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

2.结构化时间(struct_time)

主要是给计算机看的,人看不适应,但是根据中间的单词意思也可以看懂

这里需要注意,因为外国的日期和星期跟我们不太一样,我们需要根据具体情况修改。

3.格式化时间(Format String)

主要是给人看的,通过一定的符号表示对应的年月日时分秒

代码演示:

#导入时间模块
import time

#时间戳
print(time.time())
# 结果:1666168973.8717413

#时间字符串
print(time.strftime("%Y-%m-%d %X"))
# 结果:2022-10-19 16:42:53
print(time.strftime("%Y-%m-%d %H-%M-%S"))
# 前面三个表示日期的%字符可以用%+小写的x表示,后面三个表示时间的%字符可以用大写的X表示
# 结果:2022-10-19 16-42-53

#时间元组:localtime将一个时间戳转换为当前时区的struct_time
print(time.localtime())
# 结果:time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=42, tm_sec=53, tm_wday=2, tm_yday=292, tm_isdst=0)

拓展1:

格式化时间中,各个符号代表的意思:

%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 当前时区的名称
%% %号本身

拓展2:

struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

索引(Index) 属性(Attribute) 值(Values)
0 tm_year(年) 比如2011
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(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为0

几种时间格式的转换

import time
#时间戳-->结构化时间
# time.gmtime(时间戳)    # 根据UTC时间进行转换,与英国伦敦当地时间一致
# time.localtime(时间戳) # 根据当地时间进行转换。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间
print(time.gmtime(1500000000))
# 结果:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
print(time.localtime(1500000000))
# 结果:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

#结构化时间-->时间戳 
#time.mktime(结构化时间)
time_tuple = time.localtime(1500000000)
print(time.mktime(time_tuple))
# 结果:1500000000.0
import time
#结构化时间-->字符串时间
#time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则显示当前时间
print(time.strftime("%Y-%m-%d %X"))
# 结果:'2017-07-24 14:55:36'
print(time.strftime("%Y-%m-%d", time.localtime(1500000000)))
# 结果:'2017-07-14'

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
print(time.strptime("2017-03-16", "%Y-%m-%d"))
# 结果:time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
print(time.strptime("07/24/2017", "%m/%d/%Y"))
# 结果:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)

import time
#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
print(time.asctime(time.localtime(1500000000)))
# 结果'Fri Jul 14 10:40:00 2017'
print(time.asctime())
# 结果'Mon Jul 24 15:18:33 2017'

#时间戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
print(time.ctime())
# 结果'Mon Jul 24 15:19:07 2017'
print(time.ctime(1500000000))
# 结果'Fri Jul 14 10:40:00 2017'

datetime模块

1.datetime.now() # 获取当前datetime

datetime.utcnow() # 获取当前格林威治时间

from datetime import datetime

#获取当前本地时间
a=datetime.now()
print('当前日期:',a)

#获取当前世界时间
b=datetime.utcnow()
print('世界时间:',b)

2.datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime

from datetime import datetime

#用指定日期创建
c=datetime(2017, 5, 23, 12, 20)
print('指定日期:',c)

3.将以下字符串转换成datetime类型:

'2017/9/30'
'2017年9月30日星期六'
'2017年9月30日星期六8时42分24秒'
'9/30/2017'
'9/30/2017 8:42:50 '

from datetime import datetime
d=datetime.strptime('2017/9/30','%Y/%m/%d')
print(d)
e=datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六')
print(e)
f=datetime.strptime('2017年9月30日星期六8时42分24秒','%Y年%m月%d日星期六%H时%M分%S秒')
print(f)
g=datetime.strptime('9/30/2017','%m/%d/%Y')
print(g)
h=datetime.strptime('9/30/2017 8:42:50 ','%m/%d/%Y %H:%M:%S ')
print(h)

4.将以下datetime类型转换成字符串:

2017年9月28日星期4,10时3分43秒
Saturday, September 30, 2017
9/30/2017 9:22:17 AM
September 30, 2017

from datetime import datetime

i=datetime(2017,9,28,10,3,43)
print(i.strftime('%Y年%m月%d日%A,%H时%M分%S秒'))
j=datetime(2017,9,30,10,3,43)
print(j.strftime('%A,%B %d,%Y'))
k=datetime(2017,9,30,9,22,17)
print(k.strftime('%m/%d/%Y %I:%M:%S%p'))
l=datetime(2017,9,30)
print(l.strftime('%B %d,%Y'))

5.用系统时间输出以下字符串:

今天是2017年9月30日
今天是这周的第?天
今天是今年的第?天
今周是今年的第?周
今天是当月的第?天

from datetime import datetime

#获取当前系统时间
m=datetime.now()
print(m.strftime('今天是%Y年%m月%d日'))
print(m.strftime('今天是这周的第%w天'))
print(m.strftime('今天是今年的第%j天'))
print(m.strftime('今周是今年的第%W周'))
print(m.strftime('今天是当月的第%d天'))

随机数模块:random

功能简介:

import random

# 随机小数
print(random.random())
# 大于0且小于1之间的小数
# 0.7664338663654585
print(random.uniform(1, 3))
# 大于1小于3的小数
# 1.6270147180533838#恒富:发红包

# 随机整数
print(random.randint(1, 5))
print(random.randrange(1, 10, 2))

# 随机选择一个返回
print(random.choice([1, '23', [4, 5]]))
print(random.choices([1, '23', [4, 5]]))
# choices返回的不是字符了,返回的是保留原来数据类型的数据值
# 随机选择多个返回,返回的个数为函数的第二个参数
print(random.sample([1, '23', [4, 5]], 2))
# [[4, 5], '23']


# 打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item)  # 打乱次序
print(item)
# [5, 1, 3, 7, 9]
random.shuffle(item)
print(item)
# [5, 9, 7, 1, 3]

产生图片验证码(搜狗面试题):

每一位都可以是大写字母 小写字母 数字 n位

import random


def suijishu(n):
    res = ''
    for i in range(n):
        wd_d = chr(random.randint(65, 90))
        wd = chr(random.randint(97, 122))
        num = str(random.randint(0, 9))
        choice = random.choice([wd, wd_d, num])
        res = res + choice
    print(res)


suijishu(5)

os模块(重要)

OS模块主要用于代码与操作系统的交互

1、mkdir/makedirs

创建目录(文件夹)

import os
# 1.创建目录(文件夹)
os.mkdir(r'd1')  
# 相对路径 在执行文件所在的路径下创建目录     可以创建单级目录
os.mkdir(r'd2\d22\d222')  
# 不可以创建多级目录
os.makedirs(r'd2\d22\d222')  
# 可以创建多级目录
os.makedirs(r'd3')  
# 也可以创建单级目录

2、rmdir/removedirs

删除目录(文件夹),内部有文件的不能删除

os.rmdir(r'd1')  
# 可以删除单级目录
os.rmdir(r'd2\d22\d222')  # 不可以一次性删除多级目录
os.removedirs(r'd2\d22')  # 可以删除多级目录
os.removedirs(r'd2\d22\d222\d2222')  # 只能删除空的多级目录
os.rmdir(r'd3')  # 只能删空的单级目录

3、listdir

列举指定路径下内容名称

print(os.listdir())
print(os.listdir(r'D:\\'))

4、rename/remove

重命名/删除文件

os.rename(r'a.txt', r'aaa.txt')
# 把a.txt命名成aaa.txt
os.remove(r'aaa.txt')

5、getcwd/chdir

获取/切换当前工作目录

print(os.getcwd())  
# D:\pythonProject03\day19
os.chdir('..')  
# 切换到上一级目录
print(os.getcwd())  
# D:\pythonProject03
os.mkdir(r'hei')

6、abspath/dirname

动态获取项目根路径(重要)

print(os.path.abspath(__file__))  
# 获取执行文件的绝对路径(具体到文件名称) D:/pythonProject03/day19/01 os模块.py
print(os.path.dirname(__file__))  
# 获取执行文件所在的目录路径(具体到文件的所在文件夹)D:/pythonProject03/day19

7、exists/isfile/isdir

判断路径是否存在(文件、目录)

print(os.path.exists(r'01 os模块.py')) # 判断文件路径是否存在  True
print(os.path.exists(r'D:\pythonProject03\day19'))  
# 判断目录是否存在  True
print(os.path.isfile(r'01 os模块.py')) # 判断路径是否是文件  True
print(os.path.isfile(r'D:\pythonProject03\day19'))  
# 判断路径是否是文件  False
print(os.path.isdir(r'01 os模块.py')) # False
print(os.path.isdir(r'D:\pythonProject03\day19'))  
# True

8、join

路径拼接(重要)

s1 = r'D:\pythonProject03\day19'
s2 = r'01 os模块.py'
print(f'{s1}\{s2}')
"""
涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样
"""
print(os.path.join(s1, s2))

9、getsize

获取文件大小(字节)

print(os.path.getsize(r'a.txt'))

10、其他功能

# 获取文件/目录信息
print(os.stat(r'modeos.py'))
# 结果:os.stat_result(st_mode=33206, st_ino=5066549580814332, st_dev=504610996, st_nlink=1, st_uid=0, st_gid=0,
# st_size=2975, st_atime=1666252445, st_mtime=1666252445, st_ctime=1666250317)

# 运行shell命令,直接显示
os.system("bash command")

# 运行shell命令,获取执行结果
os.popen('bash command').read()

# 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
print(os.path.basename(r'D:/pythonproject/10.20/'))  # 返回空值
print(os.path.basename(r'D:/pythonproject/10.20/modeos.py'))
# 结果:modeos.py

# 如果path是绝对路径,返回True
print(os.path.isabs(r'modeos.py'))
# 结果:False
print(os.path.isabs(r'D:/pythonproject/10.20/modeos.py'))
# 结果:True

# 返回path所指向的文件或者目录的最后访问时间
print(os.path.getatime(r'D:/pythonproject/10.20'))
# 结果:1666252253.9921

# 返回path所指向的文件或者目录的最后修改时间
print(os.path.getmtime(r'D:/pythonproject/10.20/modeos.py'))
# 结果:1666252253.9710982

sys模块

sys模块用于跟python解释器进行交互,比如之前设置系统的环境变量位置

1、arge

实现从程序外部向程序传递参数,当我们在pycharm运行文件的时候并不能实现外部传参的功能

res = sys.argv
if len(res) != 3:
    print('执行命令缺少了用户名或密码')
else:
    username = res[1]
    password = res[2]
    if username == 'jason' and password == '123':
        print('jason您好 文件正常执行')
    else:
        print('您不是jason无权执行该文件')

这段代码的作用就是判断有没有传参数进来,没有,传了参数就进行判断信息是否正确

2、path

获取执行文件的环境变量

import sys

# 获取执行文件的sys.path(环境变量,前两个是一样的,因为pycharm帮我们加了一次,然后我们运行的时候当前路径也会加进去)
print(sys.path)
# 结果:['D:\\pythonproject\\10.20', 'D:\\pythonproject\\10.20', 'D:\\PyCharm 2021.1.3\\plugins\\python\\helpers\\pycharm_display',
# 'D:\\python3.8\\python38.zip', 'D:\\python3.8\\DLLs', 'D:\\python3.8\\lib', 'D:\\python3.8',
# 'D:\\python3.8\\lib\\site-packages', 'D:\\PyCharm 2021.1.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend']

3、getrecursionlimit

获取python解释器默认最大递归深度

# 获取python解释器默认最大递归深度
print(sys.getrecursionlimit())  # 默认为1000

4、setrecursionlimit

修改python解释器默认最大递归深度

# 修改python解释器默认最大递归深度
sys.setrecursionlimit(2000)

5、version

返回当前的解释器版本

# 返回当前的解释器版本
print(sys.version)
# 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]

6、platform

返回平台信息

# 返回平台信息
print(sys.platform)
# 平台信息 基本都是win32(了解即可)

7、exit

返回程序中间的退出信息,arg=0为正常退出,其他为异常退出

标签:常用,内置,datetime,tm,模块,time,print,2017,os
From: https://www.cnblogs.com/wolongnp/p/17721012.html

相关文章

  • Python 内置数据类型详解
    内置数据类型在编程中,数据类型是一个重要的概念。变量可以存储不同类型的数据,不同类型可以执行不同的操作。Python默认内置了以下这些数据类型,分为以下几类:文本类型:str数值类型:int、float、complex序列类型:list、tuple、range映射类型:dict集合类型:set、frozenset布尔类型......
  • netbeans19常用快捷方式
    Ctrl+Shift+1在项目窗口中选中当前文件Ctrl+Shift+2在文件窗口中选中当前文件Ctrl+X在编辑器中删除当前光标所在的行Ctrl+/开关注释Ctrl+Shift+方向上下键向上/下复制当前光标所在行或者选中的多行Alt+Shift+方向上下键向上/下移动当前光标所在行或......
  • Jupter Notebook 常用配置
    更改工作路径命令行属于以下命令,生成配置文件。jupyternotebook--generate-config打开提示的jupyter-notebook.config.py文件。一般在:C:\Users\用户名\.jupyter\jupyter-notebook.config.py找到`c.NotebookApp.notebook_dir`这一行,重新复制一行,去掉注释符号#,然后将新的路......
  • mysql常用命令
    一、一般默认安装目录1、数据库目录/var/lib/mysql/2、配置文件/usr/share/mysql(mysql.server命令及配置文件)mysql5.5之后的默认安装路径,mysql5.5之前的是/usr/local/mysql3、相关命令/usr/bin(mysqladminmysqldump等命令)4、启动脚本/etc/rc.d/init.d/(启动脚本文件mysql......
  • List集合常用方法
    List集合常用方法(list和set都是collection的子类)          2.ArrayList集合java.util.ArrayList集合数据存储的结构是数组结构,元素增删慢,查找快,日常查找数据用的多,便利数据,ArrayList是最常用的集合。3.LinkLIst集合         ......
  • 转~~Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
    IDE中语法检查,运行都正常,Linux命令行远程运行就报错:参考文档:https://blog.csdn.net/SeaSky_Steven/article/details/106426985 1print(os.pardir)2sys.path.append(os.pardir)34'''5os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;6sys模块负责程......
  • 联发科MTK6877/MT6877(天玑900)安卓核心板_5G安卓AI智能模块
    MTK/联发科5G安卓AI智能模块(MT6877天玑900平台)开发板方案定制支持NR-SA/NR-NSA/LTE-FDD(CAT-18)/LTE-TDD(CAT-18)/WCDMA/TD-SCDMA/EVDO/CDMA/GSM等多种制式;支持WiFi6,802.11a/b/g/n/ac/ax,BTv2.1+EDR,3.0+HS,v4.1+HS,V5.2,支持Beidou(北斗),Galileo,Glonass,GPS,QZSS,GNSS(L1+L2......
  • 常用快捷键&常用Dos命令
    快捷键常用快捷键复制:Ctrl+C粘贴:Ctrl+V全选:Ctrl+A撤销:Ctrl+Z保存:Ctrl+S剪切:Ctrl+X关闭窗口:Alt+F4永久删除:Shift+Delete高级快捷键窗口键+R:打开命令行窗口cmd窗口键+E:打开我的电脑任务栏右击鼠标-->打开任务管理器/Ctrl+Shift+Esc:打开任务管理器窗口键+Tab:快速切......
  • Linux常用命令2
    cat/proc/mtd查看NandFlash分区情况flash_erase/dev/mtd300nandwrite-s0x60000-p/dev/mtd3/home/root/imx6ull-14x14-nand-7-1024x600-c.dtbsyncflash_erase/dev/mtd400nandwrite-p/dev/mtd4/home/root/zImagesyncps-Akill100 ls/dev/tty* “ttym......
  • KOA 框架最常用的 15 个中间件!
    koa-router:提供全面的路由功能,比如类似Express的app.get/post/put的写法,URL命名参数、路由命名、嵌套路由、支持加载多个中间件koa-bodyparser:post提交数据中间件,解析请求体时需要加载的中间件,支持x-www-form-urlencoded,application/json等格式的请求体,不支持form-data的请求......