零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍
1. time模块
time():获取当前时间戳,是一个数字
localtime():返回一个time.struct_time对象,里面有年月日时分秒,还有星期几(0表示星期一)和今年的第几天
import timeprint(time.time())
print(time.localtime())
1725287068.253736
time.struct_time(tm_year=2024, tm_mon=9, tm_mday=2, tm_hour=22, tm_min=24, tm_sec=28, tm_wday=0, tm_yday=246, tm_isdst=0)
localtime()也可以传入参数,表示1970年1月1日8时(本地时间)0分0秒开始经过的秒数
print(time.localtime(60))
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=1, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
ctime():返回简单易读的时间字符串
print(time.ctime())
Mon Sep 2 22:29:40 2024
strftime():将时间struct_time对象转换为格式化的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
2024-09-02 22:33:14
注意年是大写的%Y,时分秒也都是大写的:%H,%M,%S。
strptime():将字符串转换为struct_time对象
print(time.strptime('2008-08-08 20:08:08', '%Y-%m-%d %H:%M:%S'))
time.struct_time(tm_year=2008, tm_mon=8, tm_mday=8, tm_hour=20, tm_min=8, tm_sec=8, tm_wday=4, tm_yday=221, tm_isdst=-1)
sleep():程序睡眠指定的秒数
2. datetime模块
datetime.now():获取当前日期时间
# 从datetime模块中导入datetime类
from datetime import datetimeprint(datetime.now())
2024-09-02 22:40:08.851771
datetime类的构造参数可以传入年月日时分秒:
dt = datetime(2024, 9, 2, 22, 40, 0)
print(dt)
print(type(dt))
2024-09-02 22:40:00
<class 'datetime.datetime'>
取出datetime对象的年月日时分秒信息:
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
2024 9 2 22 40 0
比较两个datetime对象的大小:
dt1 = datetime(2024, 5, 1, 0, 0, 0)
dt2 = datetime(2024, 10, 1, 0, 0, 0)
print(dt1 < dt2)
True
datetime对象与字符串之间的转换(与time模块类似,都是strftime和strptime这两个方法):
print(datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S'))
print(datetime.strptime('2024-09-02 22:40:00', '%Y-%m-%d %H:%M:%S'))
计算两个datetime对象之间的差值,发现是一个timedelta对象:
dt1 = datetime(2024, 5, 1, 0, 0, 0)
dt2 = datetime(2024, 10, 1, 0, 0, 0)
print(type(dt2 - dt1))
print(dt2 - dt1)
<class 'datetime.timedelta'>
153 days, 0:00:00
还可以将datetime对象加上或者减去一个timedelta对象,得到另一个datetime对象:
from datetime import timedeltaprint(dt1 + timedelta(153))
2024-10-01 00:00:00
timedelta构造函数第一个入参是天数,第二个入参是描述:
print(dt1 + timedelta(153, 10))
2024-10-01 00:00:10
3. request模块
request库是python处理HTPP请求的库,使用request库的get()方法可以获取一个网络请求的响应,可以通过响应对象的text属性来获取响应中的字符串数据,通过响应对象的content属性来获取响应中的二进制数据(图片、音频、视频等)。
打印发现乱码,设置响应的编码格式为utf-8:
4. openpyxl模块
openpyxl模块专门用来处理Excel文件,可以对Excel文件进行写入和读取。
写入Excel文件:
import openpyxl# 创建工作簿
wb = openpyxl.Workbook()
# 创建页签,页签名和页签索引
sheet = wb.create_sheet("sheet1", 0)
# 添加数据
sheet.append([1, 2, 'a', True])
# 保存文件,传入文件名
wb.save('text.xlsx')
读取Excel文件:
# 打开表格
wb = openpyxl.load_workbook("text.xlsx")# 选择sheet1页签
sheet = wb['sheet1']# 读取文件
l = []
for row in sheet.rows:c = []for cell in row:c.append(cell.value)l.append(c)print(l)
5. pdfplumber模块
pdfplumber模块用于读取pdf文件。
import pdfplumberwith pdfplumber.open("可靠的底部形态.pdf") as f:for p in f.pages:# 提取内容print(p.extract_text())print(f"第{p.page_number}页提取结束")
可以通过pdfplumber模块实现提取指定的数据,或者将pdf倒序等功能。
6. numpy模块和matplotlib模块
使用matplotlib模块读取图片:
import matplotlib.pyplot as pltim = plt.imread("日出海.jpeg")
print(im)
print(type(im))
plt读取出的image是一个三维数组,类型为numpy数组,前两维是图片的宽和高,第三维是RGB数组。使用numpy模块对该图像进行灰度处理:
import numpy as np
import matplotlib.pyplot as pltim = plt.imread("日出海.jpeg")
print(im)
print(type(im))
plt.imshow(im)# 灰度固定值
mask = np.array([0.299, 0.587, 0.114])
im2 = np.dot(im, mask)
plt.imshow(im2, cmap='gray')
7. pandas模块
使用pandas模块读取表格数据,然后使用matplotlib模块绘制饼图
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_excel("test.xlsx")# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']#设置画布的大小
plt.figure(figsize=(10, 6))
labels = df['商品名称']
y = df['北京']# 绘制饼图
plt.pie(y, labels=labels, autopct='%1.1f%%', startangle=90)# 设置x,y轴刻度相等
plt.axis('equal')
plt.title('xxx')plt.show()
8. jieba模块
import jiebawith open('text.txt', 'r', encoding='utf-8') as f:s = f.read()# 对原始字符串进行分词,返回一个列表
l = jieba.lcut(s)# 去重
s = set(l)#统计词的次数
d = {}
for word in s:if len(word) >= 2:if word in d:d[word] = d[word] + 1else:d[word] = 1res = []
for k,v in d.items():res.append([k, v])# 按照词频从大到小排序,并取前10项
res.sort(key=lambda x: x[1], reverse=True)
print(res[0:11])
9. 文件操作
文件基本操作在前面的博客中介绍过,这里复习下文件的打开模式和读写方法:
注意,writelines方法不换行,而且传入的参数是列表(只传入一个字符串也可以),并且列表中的元素只能为字符串。
使用文件操作实现复制文件的功能:
def func_copy(source_file, target_file):with open(source_file, 'r') as sf:with open(target_file, 'w') as tf:tf.write(sf.read())func_copy('text.txt', 'text2.txt')
10. json模块
json.dumps方法使用:
l = [{'name': 'zhangsan', 'age': 18}, {'name': "lisi", 'age': 20}, {'name': 'wangwu'}]# 将Python数据类型转换为json字符串,这里是一个json数组,ensure_ascii=False表示正常显示中文,indent=4用于缩进格式
s = json.dumps(l, ensure_ascii=False, indent=4)
print(type(s))
print(s)
<class 'str'>
[{"name": "zhangsan","age": 18},{"name": "lisi","age": 20},{"name": "wangwu"}
]
json.loads方法使用:
# 将刚才的son字符串加载为python数据类型,这里是一个列表类型
l2 = json.loads(s)
print(type(l2))
print(l2)ds = '{"name": "aaa", "age": 12}'
# 将son字符串加载为python数据类型,这里是一个字典类型
d = json.loads(ds)
print(type(d))
print(d)
<class 'dict'>
{'name': 'aaa', 'age': 12}
注意,json.loads方法中的json字符串中的引号必须是双引号,否则无法解析成Python中的数据类型。
json.dump方法使用:
import jsonl = [{'name': 'zhangsan', 'age': 18}, {'name': "lisi", 'age': 20}, {'name': 'wangwu'}]# 将Python数据类型转换为json字符串,并存于文件中
with open('json.txt', 'w') as f:json.dump(l, f, ensure_ascii=False, indent=4)
json.load方法使用:
with open('json.txt', 'r') as f:s = json.load(f)print(type(s))print(s)
<class 'list'>
[{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}, {'name': 'wangwu'}]
10. os模块
getcwd():获取当前工作路径
import osprint(os.getcwd())
/Users/admin/Documents/pythonProject
listdir():获取指定目录下的所有目录和文件,如果不传参,则默认为当前工作路径,返回结果为列表
print(os.listdir())
['text.xlsx', '日出海.jpeg', 'json.txt', 'gray.jpeg', 'text2.txt', 'text.txt', 'venv', 'main.py', '可靠的底部形态.pdf', '.idea']
mkdir():创建单级目录,如果目录已存在,则报错
os.mkdir("study")
makedirs():创建多级目录,如果目录已存在,则报错
os.makedirs("study/aa/bb/cc")
rmdir():删除目录,如果目录不为空或者不存在,则报错
os.rmdir("study/aa/bb/cc")
removedirs():删除多级目录,如果目录不为空或者不存在,则报错,注意这里要求的目录为空包括父目录也要为空
os.removedirs("study/aa/bb/cc")
walk():遍历目录树,参数不能传空,遍历结果是元组包含三个元素:当前遍历的目录,当前遍历的目录下包含的目录列表,当前遍历的目录下包含的文件列表
for dirs, dirlist, filelist in os.walk("./"):print(dir)print(dirlist)print(filelist)print("------------")
remove():删除文件,如果文件不存在,则报错
os.remove('json.txt')
rename():重命名文件
os.rename('text.txt', 'test.txt')
stat():获取文件的详细信息
info = os.stat("text.xlsx")
print(type(info))
print(info)
<class 'os.stat_result'>
os.stat_result(st_mode=33188, st_ino=31111965, st_dev=16777233, st_nlink=1, st_uid=501, st_gid=20, st_size=5265, st_atime=1725375194, st_mtime=1725375193, st_ctime=1725375193)
其中,st_ctime表示文件创建时间,st_mtime表示文件的修改时间,st_atime表示文件的最近一次访问时间,st_size表示文件大小(单位是字节)。
11. os.path模块
abspath():获取目录或者文件的绝对路径
import os.path as pathprint(path.abspath("text.xlsx"))
/Users/admin/Documents/pythonProject/text.xlsx
exists():判断目录或者文件是否存在
print(path.exists("text.xlsx"))
print(path.exists("text2.xlsx"))
True
False
join():将第一个参数path和第二个参数文件名进行拼接,返回字符串,不判断文件是否存在
f = path.join('study', 'text.xlsx')
print(type(f))
print(f)
<class 'str'>
study/text.xlsx
splittext():分割文件名和后缀名,返回格式为元组,不判断文件是否存在
print(path.splitext('text.txt'))
('text', '.txt')
basename():获取文件名,不包含目录名,但是包含后缀名,不判断文件是否存在
print(path.basename("study/text.txt"))
text.txt
dirname():获取目录名,不判断文件是否存在
print(path.dirname("study/text.txt"))
study
isdir():是否是有效的目录,如果不是目录或者目录不存在,则报错
print(path.isdir("study/day"))
print(path.isdir("text.xlsx"))
print(path.isdir("./"))
False
False
True
isfile():是否是有效的文件,如果不是文件或者文件不存在,则报错
print(path.isfile("study/text.xlsx"))
print(path.isfile("text.xlsx"))
print(path.isfile("./"))
False
True
False
相关文章:

零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍
1. time模块 time():获取当前时间戳,是一个数字 localtime():返回一个time.struct_time对象,里面有年月日时分秒,还有星期几(0表示星期一)和今年的第几天 import timeprint(time.time()) pri…...
快速回顾-HTML5
HTML5-常用的标签:https://blog.csdn.net/TKOP_/article/details/111395865 <!-- HTML5:声明文档类型的标签 --> <!DOCTYPE html><!-- 用于声明网页的主要语言为简体中文 --> <!-- 帮助搜索引擎、浏览器等理解网页的语言内容,以便…...

视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
随着科技的飞速发展,视频技术已成为现代社会不可或缺的一部分,广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。本文将探讨视频技术的未来发展趋势,并深入分析TSINGSEE青犀EasyCVR视频汇聚融合平台的技术优势,展现其…...

7个流行的开源数据治理工具
数字化时代,数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程,并为决策以及智能化服务提供支撑。大数据有大用途,但是也可能隐藏着巨大的风险,特别是如果我们对数据的情况不是很了解的时候&…...

js | XMLHttpRequest
是什么? 和serve交互数据的对象;能够达到页面部分刷新的效果,也就是获取数据之后,不会使得整个页面都刷新;虽然名字是XML,但不限于XML数据。 怎么用? function reqListener() {console.log(thi…...
2024国赛数学建模A题思路模型代码
2024国赛数学建模思路资料,思路获取见文末名片 数学建模感想 纪念逝去的大学数学建模:两次校赛,两次国赛,两次美赛,一次电工杯。从大一下学期组队到现在,大三下学期,时间飞逝,我的…...
使用SVD(奇异值分解)进行降维的奇妙之旅
在数据分析和机器学习的广阔天地中,降维技术占据着举足轻重的地位。当我们面对高维数据时,不仅计算成本高昂,而且容易遭遇“维度灾难”,即随着维度的增加,数据的稀疏性和距离度量失效等问题愈发严重。为了克服这些挑战…...

【C++ 第二十一章】特殊类的设计(学习思路)
1.请设计一个类,不能被拷贝 设计思路 拷贝只会使用在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 的做法 将拷贝构造函数与赋值运算符…...
Java设计模式【命令模式】-行为型
1. 介绍 命令模式(Command Pattern) 是一种行为型设计模式,它将一个请求封装为一个对象,从而使我们可以用不同的请求对客户端进行参数化,并且支持请求的排队、记录日志以及撤销、重做等功能。命令模式将请求的发送者与…...

【HarmonyOS】一键扫码功能
【HarmonyOS】一键扫码功能 前言 鸿蒙在api10之后,对系统api的基础上,封装了较为复杂功能的开发工具包,统一称之为Kit。这些Kit根据功能定义的不同,划分为不同的种类Kit。如下图所示: 其实可以理解为集成在系统中的…...
Spring Boot应用中集成与使用多数据源
Spring Boot应用中集成与使用多数据源 1. 前言 通过定义和使用多个数据源,能在Spring Boot应用中实现更复杂的数据管理场景,比如读写分离、数据冗余等。 2. 准备工作 环境准备:确保已经准备好Spring Boot的开发环境。数据库准备ÿ…...
探索 JavaScript 中的 instanceof 关键字
在 JavaScript 这门灵活而强大的编程语言中,instanceof 是一个非常重要的操作符,它用于检测一个对象是否在其原型链的原型构造函数的 prototype 属性中出现。简而言之,instanceof 用于测试一个对象是否是其父类或者其原型链上某个构造函数的实…...

Python爬虫02
xml 和html 区别 jsonpath模块 场景 多层嵌套的复杂字典直接提取数据 安装 pip install jsonpath使用 from jsonpath import jsonpathret jsonpath(dict, jaonpath语法规则字符串)语法规则 eg: lxml模块&xpath语法 谷歌浏览器 xpath helper 插件 作用对当前页面…...
HTTP/3
http相关知识点 HTTP/3是超文本传输协议(HTTP)的最新版本,旨在进一步提高Web性能和安全性。HTTP/3的显著变化是它基于QUIC(Quick UDP Internet Connections)协议,而不是之前版本中使用的TCP协议。QUIC是由…...
MySQL 字符串操作详解和案例示范
MySQL 字符串操作详解 MySQL 提供了丰富的字符串操作函数,能够对这些字符串进行截取、定位、替换等操作。本文将详细讲解 MySQL 中的字符串操作函数,包括 SUBSTRING()、SUBSTR()、LEFT()、RIGHT()、LOCATE()、POSITION()、FIND_IN_SET()、ELT()、INSERT…...

全双工语音交互
文章目录 微软小冰全双工字节大模型语音交互[Language Model Can Listen While Speaking](https://arxiv.org/html/2408.02622v1) 微软小冰全双工 全双工的定义:一路持续的听,upload audio;一路持续的输出,download audio…...

nginx中如何设置gzip
前言 Nginx通过配置gzip压缩可以提升网站整体速度 Nginx的gzip功能是用于压缩HTTP响应内容的功能。当启用gzip时,在发送给客户端之前,Nginx会将响应内容压缩以减小其大小。这样可以减少数据传输的带宽消耗和响应时间,提高网站的性能和速度。…...

借老系统重构机会我写了个groovy规则引擎
公司老系统的重构计划早就有了,为了对Java硬编码的各种校验规则进行重构,特地参考了相关技术,最终选择了groovy进行了系统的学习,并编写了一个即插即用的轻量级规则引擎。 文章目录 项目背景技术选型groovy的性能groovy脚本执行线…...

C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码+硬编码录制MP4
目录 说明 效果 项目 代码 下载 说明 利用周杰的开源项目 Sdcb.FFmpeg 项目地址:https://github.com/sdcb/Sdcb.FFmpeg/ 代码实现参考:https://github.com/sdcb/ffmpeg-muxing-video-demo 效果 C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码硬…...

第4章 汇编语言和汇编软件
第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构,汇编语言有不同的风格,那么不同的CPU架构和不同的汇…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...