疫情环境下的网络学习笔记 python 3.30

3.30

正课

time 模块

import time

时间分为三种格式

  • 时间戳

    从1970年到现在经历过的秒

    print(time.time())
    # 1585530854.2276137
    

    用于时间间隔的计算

  • 按照某种格式显示的时间,如2020-03-30

    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    # 2020-03-30 09:09:53 AM
    print(time.strftime('今天是%Y年%m月%d日,现在是%H点%M分%S秒%p'))
    # 今天是2020年03月30日,现在是09点19分32秒AM
    # %x 当前的日期 
    

    用于展示时间

  • 结构化的时间

    res = time.localtime()
    print(res.tm_year) # 
    print(res.tm_yday) # 这一年里已经过了多少天
    print(res.tm_hour) # 获取当前小时。。。
    

    用于单独获取时间的某一部分

datetime 模块

import datetime
print(datetime.datetime.now())
# 2020-03-30 09:24:16.711104
# 返回这个格式的时间

可以直接用来计算时间,在.timedelta里指定参数

print(datetime.datetime.now() + datetime.timedelta(days=3))
# 三天后的时间
print(datetime.datetime.now() + datetime.timedelta(weeks=3))
# 三周后的时间

时间格式的转换

时间戳,结构化时间,格式化的字符串时间可以互相转换

time.mktime(structtime) # 将格式化时间转换为时间戳

# 结构化时间转时间戳
import time
s_time = time.localtime()
print(s_time)
print(time.mktime(s_time))
# time.(tm_year=2020, tm_mon=3, tm_mday=30, tm_hour=9, tm_min=32, tm_sec=9, tm_wday=0, tm_yday=90, tm_isdst=0)
# 1585531929.0
# 时间戳转格式化时间
tp_time = time.time()
print(time.localtime(tp_time))

# 世界时间,gmt时间
print(time.localtime(tp_time))
print(time.gmtime(tp_time))
s_time = time.localtime()
print(s_time)
print(time.strftime('%Y-%m-%d %H:%M:%S %p',s_time))  # struct time在第二个参数

格式化的时间与时间戳互转

当时间存在文件里,读取的时候不是time类型,而是字符串,进行时间计算需要要进行转换

首先将格式化字符串时间转为时间戳

# '2020-03-30 09:38:06'
# 格式化字符串时间先转成结构化时间,再转字符串,再转回来转成格式化字符串时间
# format string -----> struct time-----> timestamp

struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
# 第一个参数是字符串时间,第二个参数按格式填入%
print(struct_time)  # 转成struct time
timestamp=time.mktime(struct_time)+7*86400  # 转成时间戳,加7*86400秒
print(timestamp)

时间戳再转回格式化字符串时间

res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))  # 先转成struct time,再转成格式化字符串
print(res)

了解

print(time.asctime())
# Mon Mar 30 09:53:04 2020

random模块

import random
print(random.random())  # 随机得到0,1之间的浮点数
print(random.randint(1,3))  # 随机取一个闭区间范围的整数
print(random.randrange(1,3)) # 随机选数字,左闭右开
print(random.choice([1,'aaa',[4,5]]))  # 随机得到任意一个元素
print(random.sample([1,3,222,'aaa',[4,5]],3)  # 随机取出列表中的指定个元素,放进一个列表
print(random.uniform(1,3))  # 随机得到一个1,3之间的小数

应用:生成随机验证码

# 生成4位数字验证码
import random
print(random.randint(0,9999))  # 4位验证码

# 生成6位字母 + 数字验证码
# 随机得到一个字母,可以随机产生字母的ASCII表中的编码,再转成字母
# chr(65) :'A'  chr(90):'Z'
# ord('A'): 65
res = ''
for i in range(6):
    s1 = chr(random.randint(65, 90))
    s2 = str(random.randint(0, 9))
    res += random.choice([s1,s2])

print(res)

# X3I11G

os 模块

import os
os.getcwd()  # 获得当前python文件路径
os.chdir('dirname')  # 改变当前工作目录
os.rename(oldname,newname)  # 重命名文件
os.mkdir('dirname')  # 生成空目录
os.removedirs(dirname)  # 递归删除所有空目录
os.listdir()  # 获取某一个文件夹下所有的子文件以及文件夹的名字
os.path.getsize()  # 查看文件大小
os.remove(path)  # 删除一个文件
os.system(cmd)  # 运行windows命令,在操作系统上运行
print(os.environ)  # 查看全部的环境变量
# os.environ 得到一个字典,其中key和value中都是str

os.path 系列

import os
print(os.path.abspath(__file__))  # 得到当前文件的绝对路径,会转换成当前平台的格式
print(__file__)  # 与这个用法一样
 
print(os.path.dirname(path))  # 返回path的目录。其实就是os.path.split(path)的第一个元素
print(os.path.basename(path))  # 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

os.path.join((path1[, path2[, ...]])  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
             
os.path.getsize(path)  # 返回path 的大小

取上级目录,还是推荐使用,py2,py3都能用

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

python3.5之后,推出了一个新的模块pathlib

from pathlib import Path
res = Path(__file__).parent.parent

sys模块

sys.path  # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.argv  # 命令行参数List,第一个元素是程序本身路径

示例1:使用sys.argv 传入的文件路径对文件进行拷贝操作

示例2:打印进度条功能:

# print('\r[%-50s]'%'#',end='') 左对齐,宽度为50,每次打印都从行首开始打印,实现动态显示

# 要真的实现进度条,而不是光打印

# 假设要下载数据
recv_size = 0
total_size = 500000
while recv_size < total_size:
    # 模拟每次下载1024个数据
    time.sleep(0.01)
    recv_size += 1024
	# 打印进度条
    percent = recv_size / total_size
    if percent > 1:
        percent = 1
    res = int(50*percent)*'#'
    print('\r[%-50s] %d%%'%(res,percent*100),end='')

改进,写成函数

def progress(percent):
	if percent > 1:
		percent = 1
	

shutil 模块

import shutil
shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
# 将文件内容拷贝到另一个文件中

shutil.copyfile('f1.log', 'f2.log')  # 目标文件无需存在

...
posted @ 2020-03-30 19:03  黑猫警长紧张  阅读(169)  评论(0)    收藏  举报