常见内置模块
datetime模块
简介
与time模块类似,都是与时间操作相关的模块
方法描述
| 属性或方法 | 描述 |
|---|---|
| date.today() | 获取当前日期 |
| datetime.today() | 获取当前日期和时间 |
| datetime.timedelta(days=3) | 获取两个时间之间的时间差 |
| datetime.now() | 获取当前日期和时间 |
| datetime.utcnow() | 获取当前格林威治的日期时间 |
| datetime(2021, 5, 20, 13, 14) | 创建指定的日期时间 |
代码演示
import datetime
# 获取当前日期和时间
res = datetime.datetime.today() # datetime 年月日 时分秒
# 获取当前日期
res1 = datetime.date.today() # date 年月日
print(res) # 2022-07-15 15:19:31.637902
print(res1) # 2022-07-15
print(res.year) # 2022
print(res.month) # 7
print(res.weekday()) # 4
print(res.isoweekday()) # 5
# 获取两个时间之间的时间差
t1 = datetime.timedelta(days=3)
print(res1 + t1) # 2022-07-18
print(res1 - t1) # 2022-07-12
# 获取当前日期和时间
print(datetime.datetime.now()) # 2022-07-15 15:26:37.704452
# 获取当前格林威治的日期时间
print(datetime.datetime.utcnow()) # 2022-07-15 07:26:37.704452
# 创建指定的日期时间
c = datetime.datetime(2021, 5, 20, 13, 14)
print('指定日期:', c) # 指定日期: 2021-05-20 13:14:00
os模块
简介
os模块只要是跟当前程序所在的操作系统打交道
方法描述
| 属性或方法 | 描述 |
|---|---|
| os.mkdir() | 创建单级目录(不能创建多级目录) |
| os.makedirs() | 创建单级目录或多级目录 |
| os.rmdir() | 删除单级目录,不支持删除多级目录(有数据的目录无法删除) |
| os.removedirs() | 由内而外递归删除空目录,直到有数据的目录为止(有数据的目录无法删除) |
| os.listdir() | 列举指定路径下的文件名称(文件、目录) |
| os.rename() | 重命名文件 |
| os.remove() | 删除文件 |
| os.getcwd() | 获取当前工作路径(所在的路径) ,绝对路径 |
| os.chdir() | 改变当前工作目录到指定的路径 |
| os.path.abspath(__ file__) | 获取当前文件的绝对路径(可以不记) |
| os.path.dirname(__ file__) | 获取当前文件所在的目录路径(必须得记) |
| os.path.exists() | 判断路径是否存在文件、目录 |
| os.path.isdir() | 用于判断路径是否是目录(文件夹) |
| os.path.isfile() | 用于判断路径是否是文件 |
| os.path.join() | 拼接路径 |
| os.path.getsize() | 获取文件大小(bytes) |
代码演示
import os
# os.mkdir() 创建单级目录
os.mkdir(r'aaa') # 创建单级目录
os.mkdir(r'bbb\ccc\ddd') # mkdir无法创建多级目录
# os.makedirs() 创建单级目录、多级目录
os.makedirs(r'bbb') # 创建单级目录
os.makedirs(r'ccc\ddd\eee') # 创建多级目录
# os.rmdir() 删除单级目录,不支持删除多级目录(有数据的目录无法删除)
os.rmdir(r'aaa') # 可以删除单级目录
os.rmdir(r'bbb') # 单级目录有其他数据无法删除
os.rmdir(r'ccc') # 不支持多级目录的删除
# os.removedirs() 由内而外递归删除空目录,直到有数据的目录为止(有数据的目录无法删除)
os.removedirs(r'aaa') # 可以删除单级目录
os.removedirs(r'bbb') # 目录有其他数据无法删除
os.removedirs(r'ccc\ddd\eee') # 由内而外递归删除空目录 直到有数据的目录为止
# os.listdir() 列举指定路径下的文件名称(文件、目录)
print(os.listdir()) # 结果是列表 ['.idea', 'aaa', 'one.py', '__pycache__']
print(os.listdir(r'D:\\'))
# os.rename() 重命名文件
os.rename(r'a.txt', r'aaa.txt')
# os.remove() 删除文件
os.remove(r'aaa.txt')
# os.getcwd() 获取当前工作路径(所在的路径) 绝对路径
print(os.getcwd()) # D:\pycham\PycharmProjects\day24
# os.chdir() 改变当前工作目录到指定的路径
os.chdir(r'..') # 改变当前工作目录到上一层路径
os.mkdir(r'ohuohuo')
print(os.getcwd()) # D:\pycham\PycharmProjects
# os.path.abspath(__file__) 获取当前文件的绝对路径(可以不记)
print(os.path.abspath(__file__)) # D:\pycham\PycharmProjects\day24\one.py
# os.path.dirname(__file__) 获取当前文件所在的目录路径(必须得记)
print(os.path.dirname(__file__)) # D:/pycham/PycharmProjects/day24
# os.path.exists() 判断路径是否存在(文件、目录)
print(os.path.exists(r'aaa')) # True
print(os.path.exists(r'ccc')) # True
print(os.path.exists(r'one.py')) # True
print(os.path.exists(r'a.txt')) # False
# os.path.isdir() 用于判断路径是否是目录(文件夹)
print(os.path.isdir(r'aaa')) # True
print(os.path.isdir(r'one.py')) # False
print(os.path.isdir(r'bbb.txt')) # False
# os.path.isfile() 用于判断路径是否是文件
print(os.path.isfile(r'aaa')) # False
print(os.path.isfile(r'one.py')) # True
print(os.path.isfile(r'bbb.txt')) # True
# os.path.join() 拼接路径
relative_path = 'a.txt'
absolute_path = r'D:\pycham\PycharmProjects\day24\ccc\ddd\eee'
res = os.path.join(absolute_path, relative_path) # D:\pycham\PycharmProjects\day24\ccc\ddd\eee\a.txt
print(res)
"""
涉及到路径拼接,不要使用加号,建议使用os模块的里面join方法
join方法可以自动识别当前所在的操作系统并自动切换正确的分隔符 windows用\ mac用/
"""
# os.path.getsize() 获取文件大小(bytes)
print(os.path.getsize(r'one.py')) # 3176
print(os.path.getsize(r'a.txt')) # 12
sys模块
简介
sys模块主要是跟python解释器打交道
方法描述
| 属性或方法 | 描述 |
|---|---|
| sys.argv() | 命令行参数List,第一个元素是程序本身路径 |
| sys.exit(n) | 退出程序,正常退出时exit(0),错误退出sys.exit(1) |
| sys.version() | 获取Python解释程序的版本信息 |
| sys.path() | 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的 |
| sys.platform() | 返回操作系统平台名称 |
代码演示
import sys
print(sys.argv) # 命令行参数List,第一个元素是程序本身路径
print(sys.path) # 结果是列表
print(sys.version) # 查看解释器信息
print(sys.platform) # 查看当前平台
json模块(序列化模块)
简介
序列化:将原本的字典、列表等内容转换成字符串的过程
序列化的目的:
- 以某种存储形式使自定义对象持久化
- 将对象从一个地方传递到另一个地方
- 让程序更具维护性
json格式的特征:首先是字符串,其次引号是标志性的双引号
方法描述
| 属性或方法 | 描述 |
|---|---|
| json.dumps() | 将其他数据类型转换成json格式字符串 |
| json.loads() | 将json格式字符串转化成对应的数据类型 |
| json.dump() | 将其他数据数据以json格式字符串写入文件 |
| json.load() | 将文件中json格式字符串读取出来并转换成对应的数据类型 |
代码演示
import json
d = {'name': 'jason', 'pwd': 123}
with open(r'b.txt', 'w', encoding='utf8') as f:
f.write(json.dumps(d))
with open(r'b.txt', 'r', encoding='utf8') as f:
data = f.read()
res = json.loads(data)
print(res, type(res)) # {'name': 'jason', 'pwd': 123} <class 'dict'>
import json
d = {'name': 'jason', 'pwd': 123}
with open(r'b.txt', 'w', encoding='utf8') as f:
json.dump(d, f) # 直接让字典写入文件(json自动帮你完成转换)
with open(r'b.txt', 'r', encoding='utf8') as f:
data = f.read()
res = json.load(f)
print(res, type(res)) # {'name': 'jason', 'pwd': 123} <class 'dict'>
json实操
# 1.涉及到用户数据的存储 可以单用户单文件
# jason.json
# kevin.json
# oscar.json
import json
import os
base_dir = r'D:\pythonProject\day24\db'
username = input('username>>>:').strip()
username_list = os.listdir(base_dir)
if username in username_list:
file_path = os.path.join(base_dir,username)
with open(file_path, 'r', encoding='utf8') as f:
data = json.load(f)
print(data, type(data))
print(os.listdir(r'D:\pythonProject\day24\db'))
base_dir = os.path.dirname(__file__)
db_path = os.path.join(base_dir,'db')
if not os.path.exists(db_path):
os.mkdir(db_path)
username = input('username>>>:').strip()
password = input('password>>>:').strip()
user_dict = {'username': username,
'password': password,
'balance': 15000,
'shop_car':[]
}
file_path = os.path.join(db_path, '%s'%username)
with open(file_path,'w',encoding='utf8') as f:
json.dump(user_dict, f)
作业
# 1.编写一个统计指定文件类型的脚本工具
# 输入指定类型的文件后缀
# eg:.txt
# 并给出一个具体路径 之后统计该类型文件在该文件下的个数
# ps:简单实现即可 无需优化
import os
file_type = input('请输入文件后缀:').strip()
file_path = os.path.dirname(__file__)
print(file_path)
file_list = os.listdir(file_path)
count = 0
for f in file_list:
if f.endswith(file_type):
count += 1
print(count)
# 2.针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便
import os
import json
file_path = os.path.dirname(__file__)
db_path = os.path.join(file_path, 'db')
if not os.path.exists(db_path):
os.mkdir(db_path)
username = input('username>>>:').strip()
password = input('password>>>:').strip()
user_dict = {
'username': username,
'password': password
}
file_path = os.path.join(db_path, 'userinfo.txt')
with open(file_path, 'a', encoding='utf8') as f:
f.write(f'{json.dumps(user_dict)}\n')
posted on
浙公网安备 33010602011771号