【新人系列】Python 入门(二十八):常用标准库 - 上
✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪
官方文档:https://docs.python.org/zh-cn/3.7/library/os.html
利用 Python 标准库或三方库,覆盖的功能场景包括:Web 框架、网络编程、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。
- Python 标准库:https://docs.python.org/zh-cn/3.7/library/index.html
- Python 资源集合:https://github.com/zhoujinjian/awesome-python-cn
Tips:
不用通过 pip 工具下载的库称为标准库,需要用 pip 工具下载的库称为第三方库。
有些问题可以通过现成的库进行解决,通过上面提供的链接可以寻找符合需求的库进行下载使用。
1. os 模块
1.1 os 定义
os 模块是 Python 标准库中的一个用于访问操作系统相关功能的模块,使用 os 模块中提供的接口,可以实现跨平台访问。
os 模块的主要功能:系统相关、目录及文件操作、执行命令和管理进程
模块导入方式:
import os
1.2 使用方法
常见函数及方法
os 模块中包含了一系列文件操作相关的函数:
os.path 模块不仅提供了一些操作路径字符串的方法,还包含一些或者指定文件属性的一些方法:
上面红色标注的方法是日常过程中比较常用的方法,其中前三个标红的方法使用方法如下。
import os
# 获取当前文件的绝对路径
print(os.path.abspath(__file__)) # /Users/Desktop/project/test_python/test.py
# 获取当前文件名
print(os.path.basename(__file__)) # test.py
# 获取当前文件所在目录
print(os.path.dirname(__file__)) # /Users/Desktop/project/test_python
而 listdr 和 walk 方法都可用于遍历目录,其使用场景如下:
- 场景 1:在一个目录中只有文件,没有子文件夹,使用 os.listdir
- 场景 2:一个目录下既有子目录也有文件,需要递归遍历时,使用 os.walk
walk 函数声明:
- 返回值:函数返回一个元组,含有三个元素。
- 分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。
import os
path = "."
# 在一个目录下只有文件,没有文件夹,这个时候可以使用 os.listdir 遍历
for filename in os.listdir(path):
print(os.path.join(path, filename))
# 递归的情况,一个目录下既有目录也有文件,则可以使用 os.walk 遍历
for root, dirs, files in os.walk(path):
# 继续遍历当前目录下的所有文件
for name in files:
print(os.path.join(root, name))
# 继续遍历当前目录下的所有目录
for name in dirs:
print(os.path.join(root, name))
执行命令
使用 os 模块中的 system 或者 popen 等方法可以执行操作系统的命令令。
- os.system(command)
运行操作系统命令,直接显示结果。但返回值是 0 或 -1,不能获得显示在屏幕上的数据。其中 command 是要执行的命令字符串。
import os
os.system("ls")
- os.popen(command, [mode, [bufsize]])
如果想将执行的命令结果持久化到变量中,则可以使用这个方法。它开启了一个子进程执行 command 参数指定的命令,在父进程和子进程之间建立一个管道 pipe,用于在父子进程间通信,并通过 read() 方法将命令的结果返回。
import os
ret = os.popen("ls")
print(ret)
print(ret.read())
2. sys 模块
2.1 sys 定义
sys 模块主要是针对与 Python 解释器相关的变量和方法,不是主机操作系统。
导入方式:
import sys
2.2 使用方法
- sys.argv
sys.argv 是一个脚本执行参数列表,列表的第一个元素是脚本名称,从第二个元素开始才是真正的参数。
import sys
# 打印参数列表
for index, arg in enumerate(sys.argv):
print("第 %d 个参数是:%s" % (index, arg))
- sys.path
sys.path 是 Python 的搜索模块的路径集合,Python 就会按照这个路径集合搜索查找模块。
import sys
# 模块搜索路径
for path in sys.path:
print(path)
如果想添加模块查找的路径,则可以直接使用 append 方法添加。
sys.path.append("C:\\") # 将 C 盘路径添加到模块的查找的路径中
3. time 模块
3.1 time 定义
time 模块是 python 专门用来处理时间的内建库。
导入方式:
import time
3.2 使用方法
时间获取
在 Python 中,通常有这几种方式来表示时间:
- 时间戳
- 时间字符串
- 时间元组(struct_time)
import time
# 获取时间戳
t1 = time.time()
print(int(t1)) # 1723771496
# 获取时间元组
t2 = time.localtime()
print(t2) # time.struct_time(tm_year=2024, tm_mon=8, tm_mday=16, tm_hour=9, tm_min=24, tm_sec=56, tm_wday=4, tm_yday=229, tm_isdst=0)
# 获取时间字符串
t3 = time.asctime()
print(t3) # Fri Aug 16 09:24:56 2024
时间类型转换
import time
# 获取时间戳
t1 = time.time()
print(int(t1)) # 1723772044
# 将一个时间戳转换为时间元组
t2 = time.localtime((t1))
print(t2) # time.struct_time(tm_year=2024, tm_mon=8, tm_mday=16, tm_hour=9, tm_min=34, tm_sec=4, tm_wday=4, tm_yday=229, tm_isdst=0)
# 再将时间元组转换回时间戳
t3 = time.mktime(t2)
print(t3) # 1723772044.0
# 将时间戳转换成时间字符串
t4 = time.ctime(t3)
print(t4) # Fri Aug 16 09:34:04 2024
时间类型格式化
- time.strftime(format[, struct_time])
传入格式和 struct_time,返回按照 format 格式化后的时间字符串。
import time
# 将 struct_time 对象转换成格式化时间字符串
t1 = time.strftime("%Y-%m-%d %H:%M:%S")
print(t1) # 2024-08-16 09:37:36
t = time.localtime() # 在睡眠前获取
time.sleep(3)
t2 = time.strftime("%Y-%m-%d %H:%M:%S", t)
print(t2) # 2024-08-16 09:37:36
- time.strptime(string[, format])
将字符串时间转为 struct_time,time.strftime() 的逆向操作。
import time
# 将时间字符串转换成 struct_time 对象
time_str = "2010-01-01 20:00:00"
t = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(t) # time.struct_time(tm_year=2010, tm_mon=1, tm_mday=1, tm_hour=20, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=-1)