【Python库和代码案例:第一课】Python 标准库与第三方库实战指南:从日期处理到 Excel 操作

【Python库和代码案例:第一课】Python 标准库与第三方库实战指南:从日期处理到 Excel 操作

在这里插入图片描述


🎬 个人主页艾莉丝努力练剑
专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录
Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬 艾莉丝的简介:

在这里插入图片描述

文章目录


在这里插入图片描述

1 ~> 使用库:标准库和第三方库

就是是别人已经写好了的代码,可以让我们直接拿来用。

荀子曰:“君子性非异也,善假于物也”。

一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。

所谓的“生态”指的就是语言是否有足够丰富的库,来应对各种各样的场景。

实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程。

按照库的来源,可以大致分成两大类——

  • 标准库:Python自带的库.只要安装了Python就可以直接使用。
  • 第三方库:其他人实现的库,要想使用,需要额外安装。
咱们自己也可以实现“第三方库”发布出去,交给别人来使用。
在这里插入图片描述

来源,可以大致分成以上两大类。


2 ~> 标准库

2.1 认识标准库

2.1.1 理论

Python 自身内置了非常丰富的库,在Python官方文档上可以看到这些库的内容:Python 官方文档

简单来说, 主要是这些部分:

  • 内置函数 (如 print, input 等)
    -内置类型 (针对 int, str, bool, list, dict 等类型内置的操作).
  • 文本处理
  • 时间日期
  • 数学计算
  • 文件目录
  • 数据存储 (操作数据库, 数据序列化等)
  • 加密解密
  • 操作系统相关
  • 并发编程相关 (多进程, 多线程, 协程, 异步等).
  • 网络编程相关
  • 多媒体相关 (音频处理, 视频处理等)
  • 图形化界面相关

我们不需要把这些库的内容都背下来,只要大概知道里面有啥,需要用的时候能够找到即可。

2.2 使用 import 导入模块

2.2.1 理论

使用import可以导入标准库的一个 模块

import[模块名]

所谓“模块”,其实就是一个单独的.py文件。

使用import语句可以把这个外部的.py文件导入到当前.py文件中,并执行其中的代码。

2.2.2 最佳实践

最佳实践等到后面我们使用起来就知道啦。

2.3 代码示例:日期计算

2.3.1 理论

输入任意的两个日期,计算两个日期之间隔了多少天。

  • 使用import语句导入标准库的datetime模块。
  • 使用datetime.datetime构造两个日期,参数使用年 / 月 / 日这样的格式。
  • 两个日期对象相减,即可得到日期的差值。
import datetime date1 = datetime.datetime(2012,2,14) date2 = datetime.datetime(2022,7,12)print(date2 - date1)
在这里插入图片描述

嘻嘻,快来看一下你和心爱的人已经认识了多少天了!

关于datetime的更多操作,可以参考官方文档:datetime

在这里插入图片描述

2.3.2 最佳实践

# 代码案例:日期计算器(日期之间作差)# datetime# import datetime # (import)导入对应的模块# # 先构造 datetime 变量## # datetime.datetime(模块名.类型名)# date1 = datetime.datetime(2006,12,14)# date2 = datetime.datetime(2025,12,14)# # 也可以通过关键字参数传# # date1 = datetime.datetime(year=2025,month=12,day=14) # 更加直观# print(date2 - date1) # 两种相减可得出相差多久# # 这样写还有点别扭,我们可以直接这样写# from datetime import datetime # 变成从datetime模块import一个datetime类型# # 通过这样的改变,让我们后续无需再写[datetime.] --> [模块名.]的方式——改进的写法## # 先构造 datetime 变量# date1 = datetime(2006,12,14)# date2 = datetime(2025,12,14)# print(date2 - date1) # 结果完全一样# 还有一种写法:既能在这行代码中知道模块名是什么,也能体现出后续构造的对象是什么类型# 比较直观import datetime as dt # 还是datetime模块导入,但是给datetime取了一个别名dt,通过dt代表了datetime# 通过这样的改变,让我们后续无需再写[datetime.] --> [模块名.]的方式——改进的写法# 先构造 datetime 变量 date1 = dt.datetime(2006,12,14) date2 = dt.datetime(2025,12,14)print(date2 - date1)# 结果完全一样# 判断星期几、格式化硬件打印时间戳......

2.3.3 英文文档看不懂的问题

在这里插入图片描述

像上面这样,Python文档是国外的网站,搜索起来太慢了,等不及怎么办?

在这里插入图片描述

这样虽然也能找到,但是搜索不方便,而且太慢了——

在这里插入图片描述

我们下载Python时候就顺带下载的离线模式的Python文档,可以快速查找,缺点就是:这个离线文档全是英文!

在这里插入图片描述

2.4 代码示例:字符串操作

字符串是Python的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用。

2.4.1 剑指offer 58:翻转单词顺序

力扣链接:剑指offer 58:翻转单词顺序

在这里插入图片描述
2.4.1.1 理论
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“l am a student.”,则输出“student.aamI”。
  • 使用strsplit方法进行字符串切分,指定空格为分隔符,返回结果是一个列表。
  • 使用列表的reverse方法进行逆序。
  • 使用strjoin方法进行字符串拼接——把列表中的内容进行合并。
2.4.1.2 答案参考
defreverseWords(s): tokens = s.split() tokens.reverse()return' '.join(tokens)print(reverseWords('I am a student.'))
2.4.1.3 最佳实践
# 代码示例:字符串操作# 代码案例:单词逆序(剑指offer中的题目)# 剑指offer:是一本包含很多算法题的书!# 每个参加秋招的同学都至少把这本书刷个两遍!很多面试官出算法题就是从这本书里找的!# 如果真的遇到了原题,千万不要表现出来!这时候就到了考验演技的时候了!# 可以多“思考”一下,读读题,不要一口气写完,停顿一下# 题目:怎样区分的单词?根据空格来分割# 在Python中,思路是这样的:# 1、针对上述字符串,使用空格进行划分# 字符串 split 方法,可以指定分隔符,把字符串分成多个部分,放到一个 list 里# 2、针对刚才的切分结果列表,进行逆序(reverse方法)# 3、再把逆序后的列表,组合起来(join,并且可以在组合指定分隔符为1个空格)defreverseWords(s:str):# s:[类型声明],这样下面就有提示了(变量有了类型声明之后) tokens = s.split(' ')# 没有代码提示:是因为Python是动态类型的语言,所以我们写s的时候,# 其实Pycharm是不知道s是什么类型的,不知道是啥类型,也就不知道有哪些方法,# 所以s.spilt到底能不能调用,以及有没有其它方法,这是不好确定的 tokens.reverse()# 逆序return' '.join(tokens)# 借助空格分隔符,把这里的字符串重新拼接成一个更长的字符串# 输入一个字符串,运行程序print(reverseWords("I am a student."))

2.4.2 leetcode 796:旋转字符串

力扣链接:leetcode 796:旋转字符串

在这里插入图片描述
2.4.2.1 理论
给定两个字符串,s和goal。如果在若干次旋转操作之后,s能变成goal,那么返回true
s的旋转操作就是将s最左边的字符移动到最右边。
例如,若s='abcde',在旋转一次之后结果就是'bcdea'
  • 使用len方法求字符串的长度.如果长度不相同,则一定不能旋转得到。
  • s和自己进行拼接,然后直接使用in方法来判定goal是否是s+s的子串。
2.4.2.2 参考答案
defrotateString(s, goal):returnlen(s)==len(goal)and goal in s + s print(rotateString('abcde','cdeab'))
2.4.2.3 最佳实践
# 代码案例:旋转字符串# 题目要求# 如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true# s = "abcde" "bcdea" "cdead" "deabc" "eabcd"(s通过旋转能得到的内容)# 把最左侧的字符,给放到最右侧去!# s + s => "abcdeabcde" # 每个旋转后得到的字符串都可以在这样一个大字符串中找到defrotateString(s, goal):iflen(s)!=len(goal):returnFalsereturn goal in(s + s)# in判断某个字符串是否是另外一个字符串的子串print(rotateString("abcde","cdeab"))print(rotateString("abcde","edcba"))

2.4.3 leetcode 2255:统计是给定字符串前缀的字符串数目

力扣链接:leetcode 2255:统计是给定字符串前缀的字符串数目

2.4.3.1 理论

给你一个字符串数组words和一个字符串s,其中words[i]s只包含小写英文字母。

请你返回words中是字符串s前缀的字符串数目。

一个字符串的前缀是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列。

  • 依次遍历words中的字符串。
  • 直接使用字符串的startswith方法即可判定当前字符串是否是s的前缀。
2.4.3.2 参考答案
defcountPrefixes(words, s): res =0# 符合要求字符串个数for word in words:if s.startswith(word): res +=1return res print(countPrefixes(["a","b","c","ab","bc","abc"],"abc"))
2.4.3.3 最佳实践
# 代码案例:统计字符串前缀# 遍历 words,取出每个字符串,判定当前这个字符串是否是 s 的前缀即可(s是否是以这个字符串开题的)defcountPrefixes(words:list,s:str): count =0for word in words:if s.startswith(word):# 使用 in 操作可以判断 word 是不是 s 的一部分# s 是以 word 开头 count +=1return count # 注意缩进print(countPrefixes(['a','b','c','ab','bc','abc'],'abc'))print(countPrefixes(['a','a'],'aa'))

2.4.4 其它字符串操作

关于字符串的更多操作,参考官方文档:查看文档中的字符串操作

2.5 代码示例:文件查找工具

2.5.1 理论

指定一个待搜索路径,同时指定一个待搜索的关键字。

在待搜索路径中查找是否文件名中包含这个关键字——

  • 使用os.walk即可实现目录的递归遍历。
  • os.walk返回一个三元组,分别是当前路径当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)
import os inputPath =input('请输入待搜索路径: ') pattern =input('请输入待搜索关键词: ')for dirpath, dirnames, filenames in os.walk(inputPath):for f in filenames:if pattern in f:print(f'{dirpath}/{f}')
在这里插入图片描述

2.5.2 最佳实践

# 文件搜索工具# 很多目录,很多文件,想找到某个文件,就不太容易# 文件搜索工具——如everything# 实现文件查找工具# 输入要查找的路径,输入要搜索的文件名(一部分)# 自动地在指定的路径进行查找# import os## inputPath = input('请输入要搜索的路径:')# pattern = input('请输入要搜索的关键词:')# 递归查找,遇到子目录,就进到目录里面进行查找#OS.walk(OS:操作系统),只需要使用简单的循环就可以完成递归遍历的过程,就不必手写递归代码了# for dirpath,dirnames,filenames in os.walk(inputPath):# print('----------------------------')# print(f'dirpath = {dirpath}')# print('dirnames:')# for name in dirnames:# print(name)# print('filename:')# for name in filenames:# print(name)# dirpath: 遍历到当前位置,对应的路径是啥# dirnames: 当前目录下,都有哪些目录,是一个列表,可以包含多个目录名# filenames: 当前目录下,都有哪些文件名,是一个列表,可以包含多个文件名# os.walk: os.walk 每次调用都能自动的去针对子目录进行递归的操作,只需要使用上述循环就可以把所有的路径都获取出来# 正式实现一下这里的功能import os inputPath =input('请输入要搜索的路径:') pattern =input('请输入要搜索的关键词:')for dirpath,_,filenames in os.walk(inputPath):for f in filenames:if pattern in f:print(f'{dirpath}/{f}')# 这里只是一个简单粗暴的遍历,比不了 everything,不算特别高效
在这里插入图片描述


在这里插入图片描述

2.5.3 其它os模块操作

关于os模块的更多操作,参考官方文档:文档中的更多os操作

3 ~> 第三方库

3.1 认识第三方库

第三方库就是别人已经实现好了的库,我们可以拿过来直接使用。

虽然标准库已经很强大了,但是终究是有限的;而第三方库可以视为是集合了全世界Python程序猿的智慧,可以说是几乎无穷无尽。

问题来了,当我们遇到一个需求场景的时候,如何知道,该使用哪个第三方库呢?

这时候就需要用到下面几个网站了:

在这里插入图片描述

当我们确定了该使用哪个第三方库之后,就可以使用pip来安装第三方库了。

3.2 使用pip

3.2.1 理论

pip 是 Python 内置的 包管理器

所谓包管理器就类似于我们平时使用的手机app应用商店一样。

第三方库有很多,是不同的人,不同的组织实现的.为了方便大家整理,Python官方提供了一个网站PyPI(PyPI),来收集第三方库。
在这里插入图片描述
其他大佬写好的第三方库也会申请上传到PyPI上。

这个时候就可以方便的使用pip工具来下载PyPI上的库了。

pip在我们安装Python的时候就已经内置了,无需额外安装。

pip是一个可执行程序,就在Python的安装目录中。

打开cmd,直接输入pip,如果显示以下帮助信息,说明pip已经准备就绪。

在这里插入图片描述
如果最开始按照要求在安装 Python 的时候勾选了这个选项——



那么 pip 就是默认可用的。
在这里插入图片描述

如果pip不能使用,说明安装Pycharm时,没有勾选这个选项。

如果提示:

'pip’不是内部或外部命令,也不是可运行的程序
或批处理文件。

则说明没有正确的把pip加入到PATH中,可以手动把pip所在的路径加入到PATH环境变量中(参考这篇文章:windows环境下面配置pip环境变量)。

或者卸载重装Python,记得勾上上述选项,也许是更简单的办法

使用以下命令,即可安装第三方库——

pip install [库名]

注意: 这个命令需要从网络上下载,使用时要保证网络畅通。

安装成功后,即可使用import导入相关模块,即可进行使用。

注意:如果使用pip安装完第三方库之后,在PyCharm中仍然提示找不到对应的模块,则检查Settings->Project->PythonInterpreter,看当前Python解释器设置的是否正确(如果一个机器上安装了多个版本的Python,容易出现这种情况)。

3.2.2 最佳实践

# 第三方库(规模远超标准库)# 认识第三方库# 代码案例:pip的使用# pip(Python内置的包管理器)# 手机app,app其实是来自于不同的厂商——应用商店(下载程序不必找官网啦)# Python的第三方库也是如此!# Python官方搞了一个网址 pypi,把各种第三方库给收集起来了!又提供了一个 pip 工具# 使用 pip 就能直接从 pypi 上面下载你想要的第三方库# pip 我们视为是 Python 世界中的应用商店# 安装 Python 的时候已经自动地把 pip 装好了,我们直接就能使用!# 如何使用 pip 呢?pip是一个命令行程序# 很多语言都有依赖第三方库
在这里插入图片描述
在这里插入图片描述

pip效果如下所示,是不是蛮像应用商店的——

在这里插入图片描述

像上面这样,说明pip已经安装了,可以使用。

3.3 代码示例:生成二维码

3.3.1 通过搜索引擎,确定使用哪个库

在这里插入图片描述

得到情报,qrcode这个库,可以用来生成二维码。

3.3.2 查看 qrcode 文档

在PyPI上搜索qrcode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击则进入qrcode的详情页。

在这里插入图片描述
在这里插入图片描述

文档开头描述了如何安装qrcode

在这里插入图片描述

页面中央位置描述了 qrcode 库的使用方法。

在这里插入图片描述

3.3.3 使用 pip 安装

pip install qrcode[pil]

注意:pip安装的时候可能会有警告,提示使用的pip版本太低,这个警告我们不必处理,不影响我们正常使用。

3.3.4 编写代码

按照文档给出的示例,模仿一段代码:

import qrcode img = qrcode.make('艾莉丝努力练剑') img.save('qrcode.png')

运行完毕后,得到结果如下:

在这里插入图片描述

使用微信或者其他工具扫码,即可看到二维码内容。

所谓二维码,本质上就是使用黑白点阵表示一个字符串。

我们日常使用的二维码内部一般是一个URL,扫码后会自动跳转到对应的地址,从而打开一个网页。
在这里插入图片描述

3.3.5 最佳实践

# 二维码生成工具# 二维码本质上就是一段字符串# 我们可以把任意的字符串,制作成一个二维码图片# 生活中使用的二维码,更多的是一个URL(网址)# 标准库里面能不能干这件事情?好像没有这个功能# 这时候就要看第三方库了——搜索引擎——qrcodeimport qrcode img = qrcode.make('艾莉丝努力练剑!')# img = qrcode.make('艾莉丝努力练剑!秃秃,新的一周,继续加油吧!艾莉丝会一直支持你哒!') img.save('qrcode.png')# no news is good news

3.4 代码示例:操作 excel

3.4.1 理论

读取excel可以使用xlrd模块.文档地址:xlrd

在这里插入图片描述

修改excel可以使用xlwt模块.文档地址:xlwt

在这里插入图片描述

此处以xlrd为例,演示excel的基本操作。

3.4.2 需求

需求 有如下excel表格d:/test.xlsx

在这里插入图片描述

求100班的同学的平均分。

虽然excel自身支持很强大的功能,也可以求和,求平均值,但是如果是稍微复杂的需求,操作起来可能就没那么方便了。

3.4.3 操作

3.4.3.1 安装 xlrd
pip installxlrd==1.2.0 

注意:此处要指定版本号安装,如果不指定版本号,则安装最新版,最新版里删除了对xlsx格式文件的支持。

3.4.3.2 编写代码
  • 使用open_workbook方法打开一个 excel 文件。
  • 使用xlsx.sheet_by_index(0)获取到 0 号标签页。
  • 使用table.nrows获取到表格的行数。
  • 使用table.cell_value(row, col)获取到表格中row, col位置的元素值。
import xlrd # 1. 打开 xlsx 文件 xlsx = xlrd.open_workbook('d:/test.xlsx')# 2. 获取 0 号标签页. (当前只有一个标签页) table = xlsx.sheet_by_index(0)# 3. 获取总行数 nrows = table.nrows # 4. 遍历数据 count =0 total =0for i inrange(1, nrows):# 使用 cell_value(row, col) 获取到指定坐标单元格的值. classId = table.cell_value(i,1)if classId ==101: total += table.cell_value(i,2) count +=1print(f'平均分: {total / count}')

3.4.4 最佳实践

在这里插入图片描述
# 代码案例:操作excel# 操作 excelimport xlrd # 1、先打开 xlsx 文件 xlsx = xlrd.open_workbook('C:/Users/18106/Desktop/比特课程学习课件/Python/Python:Excel操作.xlsx')# 2、获取到指定的标签页 table = xlsx.sheet_by_index(0)# 3、获取到表格中有多少行 nrows = table.nrows # 4、进行循环统计操作 total =0 count =0for i inrange(1,nrows):# 拿到当前同学的班级 classID = table.cell_value(i,1)if classID ==100: total += table.cell_value(i,2) count +=1print(f'平均分: {total / count}')

结尾

uu们,本文的内容到这里就全部结束了,艾莉丝再次感谢您的阅读!

结语:希望对学习Python相关内容的uu有所帮助,不要忘记给博主“一键四连”哦!

往期回顾:

【Python基础:语法第六课】Python文件操作安全指南:告别资源泄露与编码乱码

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡૮₍ ˶ ˊ ᴥ ˋ˶₎ა

Read more

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理(2026 最新版·含 Auth 配置) 大家好,我是你的 AI 技术博主。今天我们来聊一个 2026 年最火的本地 AI 助理项目——OpenClaw。它能帮你清理收件箱、发邮件、管理日历、处理文件、集成 Telegram/WhatsApp,甚至执行复杂任务,而且完全跑在你自己的电脑上。 配合 Ollama 运行本地模型(如 Qwen3、Qwen2.5、GLM-4.7、Llama3.3 等),你就可以实现真正零费用、零网络依赖、全隐私保护的智能体体验。官方从 Ollama 0.17

By Ne0inhk
今日AI榜单速览(GitHub Trending AI Top3)

今日AI榜单速览(GitHub Trending AI Top3)

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 今日AI热榜 * 1 1 今日榜单速览(GitHub Trending AI Top3) * 2 2 ruvnet / RuView:WiFi DensePose 的“无线透视”路线 * 2 我的一句话总结 * 2 为什么今天它能冲到第一? * 2 图:它的可视化界面长这样(很直观) * 2 我如何最快验证(不折腾工具链) * 3 3 K-Dense-AI / claude-scientific-skills:给

By Ne0inhk
figma + claude + weavy AI :从会用到用好

figma + claude + weavy AI :从会用到用好

Google ai studio + figma + claude.ai + cosmos + Design with Weavy AI 这套头脑风暴工具看完后,你一定可从其中悟出独特、见解,并为之惊讶。我们不需要自己动手去建房子,我们可以借助不同的工具,去找找灵感,为自己创造东西,自然而然的知道自己的感受,和想要的感受。 1 / GoogleAIStudio 端到端 制定原型 GoogleAIStudio非常好,因为它能端到端完成。然后我发现Gemini在界面设计上真的很厉害!(本次以开发一款音乐日记讲述全流程)。 2 / claude.ai 制定品牌指南 (生成品牌指南 guidelines ) 先谈谈设计思想。 就像电影和电视剧有开头、中间、结尾一样,我们现在还不太在意中间和结尾。用户他们不应该觉得我们在抢他们的注意力,或者强迫他们。用户更不愿意看到一堆广告和各种乱七八糟的东西。 很多人,觉得品牌指南听起来很像企业用语,但我认为如claude、gemin这些头脑风暴工具一定能帮助我们找到想要的点。利用claude制定品牌指南,自己想要什么,我们可以看看这个,

By Ne0inhk
别再手动写代码了!Claude Skills 实战,让 AI 帮你干 80% 的活!

别再手动写代码了!Claude Skills 实战,让 AI 帮你干 80% 的活!

📋 目录 1. 什么是 Claude Skills 2. 快速安装 Skills 3. 已安装的 Skills 清单 4. Skills 使用方式详解 5. 实战案例:使用 Frontend Design Skill 创建网站 6. Skill 管理最佳实践 7. 高级技巧 8. 常见问题排查 什么是 Claude Skills Claude Skills 是模块化的能力包,包含指令、元数据和可选资源(脚本、模板),让 Claude 在需要时自动加载和使用。 核心特点 * 自动触发 - 无需手动调用,Claude 会根据你的需求自动识别并使用合适的 Skill * 渐进式加载

By Ne0inhk