零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍

news2024/11/13 12:10:30

1. time模块

time():获取当前时间戳,是一个数字

localtime():返回一个time.struct_time对象,里面有年月日时分秒,还有星期几(0表示星期一)和今年的第几天

import time

print(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 datetime

print(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 timedelta

print(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处理HTTP请求的库,使用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文件(注意每个单元格的值通过value属性来获取):

# 打开表格
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 pdfplumber

with 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 plt

im = plt.imread("日出海.jpeg")
print(im)
print(type(im))

plt读取出的image是一个三维数组,类型为numpy数组,前两维是图片的宽和高,第三维是RGB数组。使用numpy模块对该图像进行灰度处理:

import numpy as np
import matplotlib.pyplot as plt

im = plt.imread("日出海.jpeg")
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 plt

df = 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 jieba

with 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] + 1
        else:
            d[word] = 1

res = []
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 json

l = [{'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'}]

11. os模块

 

 getcwd():获取当前工作路径

import os

print(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(dirs)
    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 path

print(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():是否是有效的目录,如果不是目录或者目录不存在,则返回False

print(path.isdir("study/day"))
print(path.isdir("text.xlsx"))
print(path.isdir("./"))
False
False
True

isfile():是否是有效的文件,如果不是文件或者文件不存在,则返回False

print(path.isfile("study/text.xlsx"))
print(path.isfile("text.xlsx"))
print(path.isfile("./"))
False
True
False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我又被Spring的事务坑了,用户兑奖之后,什么东西都没收到!!

没错&#xff0c;我又被事务坑了&#xff01; 即上次的mq发送消息之后&#xff0c;业务代码回滚&#xff0c;导致发了一条中奖消息给用户&#xff01;&#xff01;&#xff0c;这次又被spring的事务坑了 这次是这样的&#xff0c;一个兑奖接口进来&#xff0c;我们先改变了这…

输入一段文字,瞬间生成应用。Furion低代码平台与AI协同工作,展现出非凡的效率与精准。

引言&#xff1a;展示问题背景 在当今快速变化的商业环境中&#xff0c;企业面临着前所未有的挑战。随着数字化转型的加速&#xff0c;企业对应用开发的需求日益增加。然而&#xff0c;传统的应用开发流程通常需要耗费大量时间和资源&#xff0c;从需求分析、设计、编码、测试到…

概念科普|ChatGPT是什么

一、引言 在人工智能的迅猛发展中&#xff0c;ChatGPT作为前沿技术的代表&#xff0c;其原理和运作方式成为了研究和讨论的热点。 常有观点将ChatGPT比喻为一种高级词语接龙&#xff0c;通过海量数据的学习与训练&#xff0c;机器能够根据给定的文本内容续写出下文&#xff0…

小米商业营销陈高铭:品牌应该多方整合,关注高质量营销 | SMARTIES CHINA 2024终审报道②

小米互联网业务部商业营销品牌总经理 陈高铭 近日&#xff0c;SMARTIES CHINA 2024终审活动在苏州音昱水中天落下帷幕。来自各行业的40位品牌广告主代表&#xff0c;历时两天时间&#xff0c;通过紧张的评审和精彩的讨论&#xff0c;从178个优秀入围案例中评选出了每个类别的金…

数据分析-螺旋环状气泡图

1 原理 采用阿基米德螺线原理&#xff0c;即以一个点匀速离开一个固定点的同时又以固定的角速度绕该固定点转动而产生的轨迹。具体原理见&#xff1a;阿基米德螺线。坐标轴公式为&#xff1a; 其中x为横坐标&#xff0c;y为纵坐标&#xff0c;r为离中心点的半径&#xff0c;为坐…

茶叶商家开店拓客线上发展增长生意

部分地区的人群酷爱喝茶&#xff0c;其他地区也有大量购茶者&#xff0c;其爱好者对茶叶的种类、年份季节口感度、价格等有着较高要求&#xff0c;花茶、绿茶、红茶、白茶、龙井、碧螺春、乌龙茶等&#xff0c;国内国外庞大市场&#xff0c;不能仅局限于本地附近客户&#xff0…

【ArcGIS】栅格计算器原理及案例介绍

ArcGIS&#xff1a;栅格计算器原理及案例介绍 栅格计算器&#xff08;Raster Calculator&#xff09;原理介绍案例案例1&#xff1a;计算栅格数据平均值 参考 栅格计算器&#xff08;Raster Calculator&#xff09;原理介绍 描述&#xff1a;在类似计算器的界面中&#xff0c;…

跨境独立站支付收款常见问题排雷篇1.0丨出海笔记

最近小伙伴们在社群讨论挺多关于独立站支付问题的&#xff0c;鉴于不少朋友刚接触独立站&#xff0c;我整理了一些独立站支付相关的问题和解决方案&#xff0c;供大家参考&#xff0c;百度网上一堆媒体的那些软文大家就别看了&#xff0c;都是软广或者抄来抄去&#xff0c;让大…

华为 昇腾 310P 系列 AI 处理器支持 140Tops 的 AI 算力。

1、产品简介 模组是基于昇腾 310P 系列 AI 处理器设计而成&#xff0c;可实现图像、视频等多种数据分析 与推理计算。超强的视频编解码能力以及支持 140Tops 的 AI 算力。在边缘侧及端侧的嵌入式计算 领域&#xff0c;有着极高的性价比&#xff0c;具有超强算力、 超高能效、…

2024最新版mysql数据库表的查询操作-总结

序言 1、MySQL表操作(创建表&#xff0c;查询表结构&#xff0c;更改表字段等)&#xff0c; 2、MySQL的数据类型(CHAR、VARCHAR、BLOB,等)&#xff0c; 本节比较重要&#xff0c;对数据表数据进行查询操作&#xff0c;其中可能大家不熟悉的就对于INNER JOIN(内连接)、LEFT JOIN…

产业互联网新星闪耀,“太行云商”引领传统产业数字化革命

产业互联网新星升起 晋城&#xff0c;作为我国能源及相关产业的重要基地&#xff0c;一直面临着信息协同不畅、存货供需失衡、资金融通困难等诸多挑战。 2023年&#xff0c;为了应对这些难题&#xff0c;晋城市政府携手AMT企源&#xff0c;成立了太行云商科技有限公司&#x…

【生日视频制作】蓝色飞机机身AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程蓝色飞机机身AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 AE模板套用改图文教程↓↓&#xff1a; 怎么如何做的【生日视频制作】蓝色飞机机身AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 下载AE模板 安装AE软件…

串口调试助手+串口打印配置

目录 一、使用CUBE_MX配置串口 二、KEIL5配置 1.打开usart.c文件 2.打开main.c文件 在main函数中&#xff1a; 一、使用CUBE_MX配置串口 二、KEIL5配置 1.打开usart.c文件 UART_HandleTypeDef huart1;void MX_USART1_UART_Init(void) {/* USER CODE BEGIN USART1_Init 0 …

【Proteus51单片机仿真】YL-69湿度检测和继电器电机自启动

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于AT89C51单片机&#xff0c;湿度检测模块通过ADC0832数模转换器&#xff0c;将模拟信号转换为数字信号给单片机&#xff0c;然后通过LCD1602显示屏显示出当前的湿度值&#xff0c;并判断当前湿度值是…

大模型的第一个杀手级应用场景出来了

大家终于都意识到大模型首先改变的是软件行业自己&#xff0c;而软件的根基是代码生成。代码生成第一波就是AI辅助开发&#xff0c;这个会是大模型第一个杀手级应用。大家苦苦逼问自己的大模型杀手级应用&#xff0c;为什么会是辅助编程&#xff0c;这里说下什么&#xff1a; 必…

数据集 Total-Text 文本检测 >> DataBall

开源数据集 Total-Text 文本检测 深度学习 人工智能 Total-Text 是一个文本检测数据集&#xff0c;由 1,555 张图像组成&#xff0c;具有多种文本类型&#xff0c;包括水平、多向和弯曲文本实例。训练分割和测试分割分别有 1,255 张图像和 300 张图像。 article{CK2019, author…

时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测

时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测 目录 时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测&#xff08;完整源码和数…

新手教学系列——用Nginx将页面请求分发到不同后端模块

在当今的Web开发中,前后端分离架构已经成为主流,尤其是大型应用项目。前端可以通过Vue这样的框架来统一管理页面和用户交互,而后端则通常会拆分成多个微服务模块,以便应对不同业务需求和功能扩展。在这样的架构下,Nginx作为一个高效、灵活的Web服务器,能够帮助我们将前端…

打造自己的大模型LLMs!独家训练秘籍!

目录 前言大语言模型 Vs机器学习模型训练过程 步骤1&#xff1a;数据策划&#xff08;Data Curation)步骤2&#xff1a;格式化与预处理步骤3&#xff1a;训练模型步骤4&#xff1a;模型评估 LLM Leaderboard [LLM Leaderboard 2024](https://www.vellum.ai/llm-leaderboard)[O…

怎么修改mvn的java版本

在maven所在目录下的bin目录中找到 mvn.cmd 文件&#xff0c;选中这个文件后&#xff0c;鼠标右键选择编辑。 在第一行添加java对应版本号的jre的路径 再次重新查看cmd下的指定的mvn -version的java版本