目录一import语句1.为什么需要 import2.四种基本的 import方式1. 导入整个模块2. 导入模块并起别名3. 从模块中导入特定的对象函数/变量/类:4. 导入模块中的所有内容3.导入自己写的模块4.什么是包Package?二常用的标准库模块1.os库1.文件路径操作2.目录操作3.文件操作4.环境变量5.执行系统命令2.datetime库1.date2.time注意time对象不支持加减运算。3.datetime4.timedelta一import语句1.为什么需要import在 Python 中我们通常不会把所有代码写在一个文件里。为了代码复用、结构清晰和团队协作我们会把功能拆分到不同的文件中。模块Module一个.py文件就是一个模块。包Package一个包含多个模块以及__init__.py文件的文件夹就是一个包。import就是用来把这些模块或包里的功能“拿”到当前文件中使用的命令。2.四种基本的import方式Python中有一个标准库模块math提供数学运算功能以下是四种最常见的导入方式1. 导入整个模块import math #导入math模块 # 使用模块名作为前缀来调用函数 result math.sqrt(16) print(result) # 输出: 4.02. 导入模块并起别名import math as m #给math库起一个别名。 result m.sqrt(16) print(result) # 输出: 4.0但要注意给一个库起了别名之后就不能再用原来的名字了否则会报错就像这个样子import math as m #给math库起一个别名。 result m.sqrt(16) print(result) # 输出: 4.0 errorresult math.sqrt(16) print(errorresult) 输出: Traceback (most recent call last): File /Users/m/Desktop/CSDN/1.py, line 5, in module errorresult math.sqrt(16) ^^^^ NameError: name math is not defined3. 从模块中导入特定的对象函数/变量/类:from math import pi print(pi)#输出3.141592653589793注意如果当前文件里也有一个叫sqrt的变量会被覆盖命名冲突。就比如说这样子pi1.45 print(pi)#此时pi等于1.45 from math import pi print(pi)#此时pi等于3.141592653589793 pi0 print(pi)#此时pi等于04. 导入模块中的所有内容from math import *#相当于:import math.sqrt,math.cos,math.pi....... print(sqrt(16)) print(cos(0))但一般来说不推荐使用这种方式因为这种方式一次性导入了大量的名字容易造成混淆托慢代码效率。3.导入自己写的模块首先在终端执行以下命令我用的是Zsh终端,如果操作系统不同的可以在图形化界面创建或者使用别的命令mMacBookAir ~ % cd ~/Desktop mMacBookAir Desktop % mkdir mymodule mMacBookAir Desktop % cd mymodule mMacBookAir mymodule % touch main.py utils.pymain.py内容:import utils message utils.greet(Alice) print(message) # 或者 from utils import greet print(greet(Bob))utils.py内容:def greet(name): return fHello, {name}!输出结果应该是Hello, Alice!Hello, Bob试一试修改utils.py添加一个max(a,b)方法用户输入两个数值,返回其中大的那一个然后在main.py调用它 。4.什么是包Package?当模块越来越多我们就用文件夹来组织它们这就是包。包的文件结构大致如下图所示my_project/│├── main.py└── my_package/├── __init__.py # 告诉 Python 这个文件夹是一个包有时可省略但建议保留├── module_a.py└── module_b.py在main.py中导入包里的模块from my_package import module_a from my_package.module_b import some_function试一试修改module_a.py和module_b.py添加一个分别添加各一个方法然后在main.py调用它。二常用的标准库模块Python 自带了非常丰富的“标准库”安装 Python 后即可直接导入使用无需额外安装上文我们使用的math就是Python自带的一个标准库下面列举几个比较常用的Python的标准库下面将一一列举讲解Python的常用标准库标准库名简介os与操作系统交互创建/删除目录、环境变量datetime处理日期、时间、时间差math基础数学运算幂、对数、三角函数random生成随机数、随机抽奖sys访问 Python 解释器变量如命令行参数platform获取操作系统信息subprocess在 Python 中运行系统命令如ls,pingargparse编写专业的命令行工具解析参数1.os库os库是 Python 标准库中最基础、最核心的库之一意思是Operating System操作系统。它提供了一个可移植的方式让你可以使用 Python 代码来与操作系统进行交互比如操作文件和文件夹、获取环境变量、执行系统命令等无论你是在 Windows、macOS 还是 Linux 上运行代码os库都能帮你屏蔽底层系统的差异。1.文件路径操作在处理文件路径时不同操作系统的分隔符不同Windows 是\Linux/macOS 是/永远不要手动拼接路径字符串请使用os.path函数作用示例os.path.join()智能拼接路径最常用os.path.join(folder, file.txt)os.path.abspath()获取绝对路径os.path.abspath(test.py)os.path.dirname()获取文件所在的目录名os.path.dirname(/a/b/c.txt)→/a/bos.path.basename()获取文件名含扩展名os.path.basename(/a/b/c.txt)→c.txtos.path.exists()判断路径是否存在os.path.exists(./data)os.path.isfile()判断是否是文件os.path.isfile(a.txt)os.path.isdir()判断是否是目录os.path.isdir(docs)os.path.splitext()分离文件名和扩展名os.path.splitext(img.jpg)→(img, .jpg)os.path.getsize()获取文件大小字节os.path.getsize(a.txt)2.目录操作函数作用示例os.getcwd()获取当前工作目录os.getcwd()os.chdir()切换当前工作目录os.chdir(../)os.listdir()列出指定目录下的所有文件和文件夹os.listdir(.)os.mkdir()创建单个目录父目录必须存在os.mkdir(new_folder)os.makedirs()递归创建多级目录os.makedirs(a/b/c)os.rmdir()删除空目录os.rmdir(empty_folder)os.removedirs()递归删除空目录os.removedirs(a/b/c)3.文件操作虽然读写文件内容通常用内置的open()函数但os提供了文件的重命名、删除和权限修改功能函数作用示例os.rename()重命名或移动文件os.rename(old.txt, new.txt)os.remove()删除文件os.remove(trash.txt)os.chmod()修改文件权限Linux/Macos.chmod(script.sh, 0o755)4.环境变量环境变量是操作系统中的全局键值对常用于存储数据库密码、API Key 等敏感信息。函数/属性作用示例os.environ获取所有环境变量字典形式os.environos.getenv()获取指定环境变量推荐不存在返回 Noneos.getenv(HOME)os.environ[KEY]设置或获取环境变量os.environ[MY_VAR] 1235.执行系统命令函数作用注意事项os.system()执行一条系统命令简单粗暴无法获取命令输出有安全风险os.popen()执行命令并获取输出已逐渐被subprocess取代2.datetime库datetime是 Python 处理日期和时间的标准库几乎在所有项目中都会用到——无论是记录日志时间戳、计算任务耗时、还是处理用户的生日或预约时间都离不开它。datetime模块里其实包含了几个不同的类类名作用包含信息示例date只处理日期年、月、日2026-08-15time只处理时间时、分、秒、微秒14:30:00datetime日期 时间最常用年、月、日、时、分、秒2026-08-15 14:30:00timedelta时间差天、秒、微秒用于加减运算相差 7 天 3 小时1.date属性 / 方法类型说明示例year实例属性年份d.year→2026month实例属性月份1–12d.month→8day实例属性日期1–31d.day→15today()类方法返回当前本地日期date.today()fromtimestamp(ts)类方法从时间戳创建日期date.fromtimestamp(1784567890)fromisoformat(s)类方法从 ISO 格式字符串解析date.fromisoformat(2026-08-15)replace()实例方法替换指定字段返回新对象d.replace(year2030)strftime(fmt)实例方法格式化为字符串d.strftime(%Y/%m/%d)isoformat()实例方法返回 ISO 8601 格式字符串d.isoformat()→2026-08-15weekday()实例方法星期几周一0, 周日6d.weekday()→5isoweekday()实例方法星期几周一1, 周日7d.isoweekday()→6isocalendar()实例方法返回 (年, 第几周, 星期几)d.isocalendar()→(2026, 33, 6)toordinal()实例方法转为 Gregorian 序数日d.toordinal()min类属性最小可表示日期date.min→0001-01-01max类属性最大可表示日期date.max→9999-12-31支持的操作操作示例结果类型加时间差date(2026, 8, 15) timedelta(days7)date减时间差date(2026, 8, 15) - timedelta(days3)date两日期相减date(2026, 8, 15) - date(2026, 1, 1)timedelta2.time注意time对象不支持加减运算。属性 / 方法类型说明示例hour实例属性小时0–23t.hour→14minute实例属性分钟0–59t.minute→30second实例属性秒0–59t.second→45microsecond实例属性微秒0–999999t.microsecond→123456tzinfo实例属性时区信息可为Nonet.tzinforeplace()实例方法替换指定字段返回新对象t.replace(hour9, minute0)strftime(fmt)实例方法格式化为字符串t.strftime(%H:%M:%S)isoformat()实例方法返回 ISO 格式字符串t.isoformat()→14:30:45.123456utcoffset()实例方法返回时区偏移量t.utcoffset()dst()实例方法返回夏令时调整t.dst()min类属性最小时间time.min→00:00:00max类属性最大时间time.max→23:59:59.9999993.datetime属性 / 方法类型说明示例year实例属性年份dt.year→2026month实例属性月份dt.month→8day实例属性日期dt.day→15hour实例属性小时dt.hour→14minute实例属性分钟dt.minute→30second实例属性秒dt.second→45microsecond实例属性微秒dt.microsecond→123456tzinfo实例属性时区信息dt.tzinfonow(tzNone)类方法返回当前本地日期时间datetime.now()today()类方法返回当前日期时间无时区datetime.today()utcnow()类方法返回当前 UTC 时间datetime.utcnow()fromtimestamp(ts, tzNone)类方法从时间戳创建datetime.fromtimestamp(1784567890)strptime(s, fmt)类方法按格式解析字符串datetime.strptime(2026-08-15, %Y-%m-%d)combine(d, t)类方法合并 date time → datetimedatetime.combine(date.today(), time(9,0))date()实例方法提取 date 部分dt.date()→2026-08-15time()实例方法提取 time 部分dt.time()→14:30:45.123456replace()实例方法替换任意字段dt.replace(year2030, hour10)strftime(fmt)实例方法格式化为字符串dt.strftime(%Y-%m-%d %H:%M:%S)isoformat()实例方法ISO 8601 格式dt.isoformat()timestamp()实例方法转为时间戳浮点数秒dt.timestamp()weekday()实例方法星期几0周一dt.weekday()isoweekday()实例方法星期几1周一dt.isoweekday()astimezone(tz)实例方法转换时区dt.astimezone(timezone.utc)支持的操作有操作示例结果类型加时间差datetime.now() timedelta(days1)datetime减时间差datetime.now() - timedelta(hours3)datetime两 datetime 相减dt1 - dt2timedelta4.timedelta属性 / 方法类型说明示例days实例属性相差天数可能为负td.days→7seconds实例属性剩余秒数0–86399td.seconds→3661microseconds实例属性剩余微秒0–999999td.microseconds→500000total_seconds()实例方法总秒数浮点数含天td.total_seconds()→642061.5构造参数—创建时可传入以下关键字timedelta(weeks1, days2, hours3, minutes30)构造参数一览参数名含义等价换算weeks周数1 week 7 daysdays天数—hours小时数1 hour 3600 secondsminutes分钟数1 minute 60 secondsseconds秒数—milliseconds毫秒数1 ms 1000 microsecondsmicroseconds微秒数—支持的操作操作示例结果类型两个 timedelta 相加td1 td2timedelta两个 timedelta 相减td1 - td2timedeltatimedelta × 数字td * 2timedeltatimedelta ÷ 数字td / 2timedeltatimedelta ÷ timedeltatd1 / td2float倍数取绝对值abs(td)timedelta比较大小td1 td2bool