python学习总结----时间模块 and 虚拟环境(了解)
2024-08-29 03:28:25
time
- sleep:休眠指定的秒数(可以是小数)
- time:获取时间戳
# 获取时间戳(从1970-01-01 00:00:00到此刻的秒数)
t = time.time()
print(t)
- localtime:将时间戳转换为对象
# 将一个时间戳转换为日期时间(time.struct_time)对象
local_time = time.localtime()
# print(local_time)
# print(local_time.tm_year)
# print(local_time[0])
- mktime:根据年月日等信息转换为时间戳
# 根据年月日时分秒等转换为时间戳
new_time = time.mktime((2018, 7, 31, 10, 37, 38, 1, 212, 0))
print(new_time)
- gmtime:功能同localtime
# 将时间戳转换time.struct_time,不包含时区
gt = time.gmtime()
# print(gt)
- timezone:时差
# 0时区与当前时区相差的秒数
print(time.timezone)
- strftime:将time.struct_time对象格式化显示
# 格式化显示
# print(time.strftime('%Y-%m-%d %H:%M:%S', local_time))
print(time.strftime('%D', local_time))
'''
%Y:年(4位)
%y:年(2位)
%m:月
%d:日
%D:月/日/年
%H:时
%M:分
%S:秒
%w:星期(1~7)
%W:本周是今年的第几周
'''
# 特定的显示格式
print(time.asctime())
calendar
- 使用
import calendar
# 返回一年的日历
c = calendar.calendar(2018, w=2, l=2, c=2, m=2)
# print(c)
# 返回某年的的某月的日历
m = calendar.month(2018, 7)
# print(m)
# 闰年判断
print(calendar.isleap(2008))
# 两个年份之间的闰年数量,区间:[起始,结束)
print(calendar.leapdays(2000, 2008))
print(calendar.leapdays(2000, 2009))
datetime
- date
from datetime import date
import time
# 创建对象
d1 = date(2018, 7, 31)
# print(d1)
d2 = date.today()
# print(d2)
d3 = date.fromtimestamp(time.time())
# print(d3)
# 标准格式
print(d1.isoformat())
# 日历显示,格式:(年,日,星期)
print(d2.isocalendar())
# 获取星期,标准格式1~7
print(d2.isoweekday())
# 获取星期,格式0~6
print(d2.weekday())
# 格式化显示
print(d3.strftime('%Y/%m/%d'))
# 转换为包含详细信息的对象(time.struct_time)
print(d3.timetuple())
- time
from datetime import time
# 创建对象
t = time(1, 2, 3)
print(t)
# 单独获取
print(t.hour)
print(t.minute)
print(t.second)
# 格式化显示
print(t.strftime('%H::%M::%S'))
- datetime
from datetime import datetime
import time
# 创建对象
dt = datetime(2018, 7, 31, 14, 21, 22)
# print(dt)
# print(type(dt))
# 本地当前时间,带时区
dt2 = datetime.now()
# print(dt2)
# 0时区时间,不带时区
dt3 = datetime.utcnow()
# print(dt3)
# 根据时间戳转换
dt4 = datetime.fromtimestamp(time.time())
# print(dt4)
# 提取日期
d = dt.date()
print(d)
print(type(d))
# 提起时间
t = dt.time()
print(t)
print(type(t))
# 转换为时间戳
print(dt.timestamp())
# 格式化显示
print(dt.strftime('%Y/%m/%d %H/%M/%S'))
- timedelta
from datetime import datetime, timedelta
d1 = datetime(2018, 7, 31, 14, 31, 32)
d2 = datetime(2018, 7, 31, 14, 15, 32)
delta = d1 - d2
print(delta)
print(type(delta))
# delta2 = timedelta(days=1, hours=1)
delta2 = timedelta(seconds=-3600)
print(delta2)
d3 = d2 + delta2
print(d3)
# 提取天数
print(delta2.days)
# 提取除天以外的秒数
print(delta2.seconds)
# 总共的秒数
print(delta2.total_seconds())
模块使用
- 定义:模块就像工具包一样,里面包含函数、类等,使用时倒入即可。
- 分类:
- 标准库:random、os、sys、time等
- 自定义:自己根据需要书写的模块
- 第三方:就是别人写好的模块,自己可以直接使用,但是需要(pip)进行安装
- 语法:
# 导入模块
import time
# 导入模块中指定的内容
from time import sleep
# 导入模块并起别名,只能使用别名
import random as rdm
# 导入模块的指定内容,并起别名
from random import randint as rint
- as:
- 使用as可以起别名,让导入的所需内容简单易记
- 使用as可以解决多个模块下的标识符冲突问题
- 模糊导入:
# 模糊导入,会导入该模块下__all__指定的内容
# 不建议使用,因为你不知道导入了什么内容
from random import *
- 自定义模块
- 新建一个文件(文件名不要与其他模块相同)
- 新建的文件名(除了后缀)就是模块名
- 导入模块的方式与官方的一样
- 模块名(文件名)就是命名空间,同一模块下的标识符不能同名,不同模块下的标识符可以同名
- 当多个模块下的标识符同名时,可以直接导入模块,也可以导入后起别名
- 测试模块
- 每个模块中都有一个变量__name__,表示当前的模块名
- 但是当前模块作为启动文件时,其值为__main__
- 通常我们这样写测试代码:
if __name__ == '__main__':
print('测试')
- 包的使用
- 定义:多个模块放在同一个目录下,这个目录下必须有一个文件__init__.py,这个目录就是一个包
- 说明:
- __init__.py文件是一个目录作为包的标志,即使该文件内容为空
- 导入时可以简化模块导入的复杂度
- 第三方模块安装
- 工具:pip
- 使用:
pip -h/--help # 查看帮助文档
pip install 包名==版本 # 安装指定的包
pip install -r 文件 # 安装文件中指定包
pip uninstall 包名 # 卸载指定的包
pip list # 列表展示已安装的包
pip show 包名 # 查看指定的包信息
pip freeze # 冷冻当前的环境
- 说明:
- 软件包安装目录:python安装目录\Lib\site-packages
- 安装失败通常是因为没有权限或断网。
虚拟环境
- 为什么使用虚拟环境?
- 在一个环境中不同软件依赖一个包的不同版本,为了进行环境隔离就出现了虚拟环境。
- 安装工具:virtualenv
- pip install virtualenv
- 创建虚拟环境:
- virtualenv 虚拟环境目录
- 激活虚拟环境:
- 运行:虚拟环境目录\Scripts\activate.bat
- 退出虚拟环境:
- 运行:虚拟环境目录\Scripts\deactivate.bat
- 快速复制一个虚拟环境:
- 冷藏原有的虚拟环境:pip freeze > requeirements.txt
- 创建一个新的虚拟环境:virtualenv 虚拟环境名
- 激活虚拟环境:虚拟环境目录\Scripts\activate.bat
- 安装依赖:pip install -r requirements.txt
最新文章
- node与Elment以及子节点childrenNode与children的区别(2)
- orcherd 汉化
- eclipse[downloads]
- 功能丰富的 Perl:轻松调试 Perl
- Win8关机 一直重启的问题 解决方案-摘自网络
- uoj164. 【清华集训2015】V 统计
- codevs 1198 国王游戏
- 转 批处理 %~dp0的意义
- Solr学习(2) Solr4.2.0+IK Analyzer 2012
- JAVA IO流结构图
- python第二篇博客,关于数据类型的详细讲解
- 20 个 Laravel Eloquent 必备的实用技巧
- springMVC 使用ajax 出现No serializer found for class异常
- css常用命名
- 长沙学院APP之校园模块设计
- 常见的js dom操作
- 架构(一)JDK安装
- Leetcode 26. Remove Duplicates from Sorted Array (easy)
- GPIO实验
- [转]状态压缩dp(状压dp)