【python基础】第26回 内置模块


目录

本章内容概要

  1. 时间模块之datetime模块
  2. os模块
  3. sys模块
  4. json模块
  5. 作业

今日内容详解

1. 时间模块之datetime模块

1.1 与time模块类似 都是时间操作相关的模块

  1. date 年月日 datetime 年月日 时分秒
import datetime
res = datetime.datetime.today()
res1 = datetime.date.today()
print(res)  # 2022-07-15 15:08:04.912520
print(res1)  # 2022-07-15
print(res.year)  # 2022
print(res.month)  # 7
print(res.weekday())  # 4
print(res.isoweekday())  # 5

image
2. timedelta括号内有很多参数 没有的时间可以通过换算得来

import datetime
res1 = datetime.date.today()
t1 = datetime.timedelta(days=4)
print(res1 + t1)  # 2022-07-19
print(res1 - t1)  # 2022-07-11

image
3. 指定时间

import datetime
print(datetime.datetime.now())  # 2022-07-15 15:21:17.986353(获取当前时间)
print(datetime.datetime.utcnow())  # 2022-07-15 07:21:17.986353(获取当前格林威治时间)
c = datetime.datetime(2020, 5, 12, 12, 12)
print('指定日期:',c)  # 指定日期: 2020-05-12 12:12:00

image

2. os模块

2.1. 创建目录

import os
# 1. 创建目录
# os.mkdir(r'aaa')  # 创建单级目录
# os.mkdir(r'bbb/ccc/ddd')  # mkdir 无法创建多级目录
# os.makedirs(r'bbb/ccc/ddd')  # makedirs 可以创建多级目录
os.makedirs(r'ccc')  # makedirs也可以创建单级目录

image

2.2. 删除目录

import os
# os.rmdir(r'aaa')  # 可以删除单极目录
# os.rmdir(r'ccc')  # 但是单级目录下能有其他数据,也不支持多级目录的删除
# os.removedirs(r'ccc')  # 针对有数据的目录也无法删除
os.removedirs(r'bbb/ccc/ddd')  # 由内而外递归删除空目录 直到有数据的目录为止

image

2.3. 列举指定路径下的文件名称(文件、目录)

import os
print(os.listdir())  #结果列表 ['.idea', '01 时间模块之 datetime.py', '02 os模块.py']
print(os.listdir(r'D://'))  # ['$RECYCLE.BIN', '.temp', '1.txt', ...... 'zlib1.dll', '作业']

image

2.4. 重命名文件 删除文件

import os
os.rename(r'a.txt',r'aaa.txt')

image

import os
os.remove(r'aaa.txt')

image

2.5. 获取当前工作路径(所在的路径) 绝对路径

import os
# print(os.getcwd())  # G:/pythonProject/day24
# os.chdir(r'..')
os.mkdir(r'zzzzz')
print(os.getcwd())

image

2.6. 与程序启动文件相关

import os
print(os.path.abspath(__file__))   # 获取当前文件的绝对路径 G:/pythonProject/day24/02 os模块.py
print(os.path.dirname(__file__))  # 获取当前文件所在的目录路径 G:/pythonProject/day24

image

2.7. 判断路径是否存在(文件、目录)

isdir只用于路径是否是目录,isfile只用于路径是否是文件

import os
# print(os.path.exists(r'AA'))  # False  很多程序一般情况下默认都忽略大小写  如果为AAA返回是Ture
# print(os.path.exists('02 os模块.py'))  # True
# print(os.path.isdir(r'aaa'))  # isdir只用于路径是否是目录(文件夹)
# print(os.path.isdir('02 os模块.py'))  # False
# print(os.path.isfile())  # isfile只用于路径是否是文件
print(os.path.isfile(r'ccc'))  # False
print(os.path.isfile(r'02 os模块.py'))  # True

image

2.8. 拼接路径

  1. 加号(+)拼接
relative_path = 'a.txt'
absolute_path = r'G:/pythonProject/day24/aaa'
# 拼接a.txt的绝对路径
print(absolute_path + relative_path)

image
2. join方法:涉及到路径拼接,不要使用加号,建议使用os模块的里面join方法,join方法可以自动识别当前所在的操作系统并自动切换正确的分隔符 windows用/ mac用/

import os
relative_path = 'a.txt'
absolute_path = r'G:/pythonProject/day24/aaa'
res = os.path.join(absolute_path, relative_path)
print(res)

image

2.9. 获取文件大小 bytes

import os
print(os.path.getsize(r'02 os模块.py'))  # 5357
print(os.path.getsize(r'a.txt'))  # 5

image

3. sys模块

3.1 sys模块主要是跟python解释器打交道

import sys
print(sys.path)  # 结果列表 ['G://pythonProject//day24', 'G://pythonProject//day24', 'G://PyCharm 2021.1.3//plugins//python//helpers//pycharm_display', 'G://Python38//python38.zip', 'G://Python38//DLLs', 'G://Python38//lib', 'G://Python38', 'G://Python38//lib//site-packages', 'G://PyCharm 2021.1.3//plugins//python//helpers//pycharm_matplotlib_backend']
print(sys.version)  # 查看解释器信息 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
print(sys.platform)  # 查看当前平台  win32

3.2 代码举例

import sys
res = sys.argv
print(res)

image
image

import sys
res = sys.argv
if len(res) == 3:
    username = res[1]
    password = res[2]
    if username == 'jason' and password == '123':
        print('您可以正在执行该文件')
    else:
        print('用户名或密码错误')
else:
    print('请填写用户名和密码 二者不可或缺')

image

4. json模块

4.1 json模块简介

  1. json模块也称之为序列化模块
  2. json模块是不同编程语言之间数据交互必备的模块(处理措施)
    image

4.2 json格式数据

  1. 数据基于网络传输肯定是二进制 那么在python中只有字符串可以调用encode方法转成二进制数据 所以json格式的数据也属于字符串
  2. json格式的数据有一个非常明显的特征,首先肯定是字符串 其次引号是标志性的双引号

4.3 json方法名字

  1. dumps() 将其他数据类型转换成json格式字符串
  2. loads() 将json格式字符串转化成对应的数据类型
import json
d = {'name': 'jason', 'pwd': 123, 'age': 2}
# 需求:将上述字典保存到文件中 并且将来读取出来之后还是字典d = {'name': 'jason', 'pwd': 123}
res = json.dumps(d)
print(res, type(res))  # 序列化,将其他数据类型转换成json格式字符串
# {"name": "jason", "pwd": 123, "age": 2} <class 'str'>
res1 = json.loads(res)
print(res1, type(res1))  # 反序列化,将json格式字符串转换成对应编程语言中的数据类型
# {'name': 'jason', 'pwd': 123, 'age': 2} <class 'dict'>

image
3. dump() 将其他数据数据以json格式字符串写入文件
4. load() 将文件中json格式字符串读取出来并转换成对应的数据类型

with open(r'b.txt','w',encoding='utf8') as f:
    # f.write(json.dumps(d))
    json.dump(d, f)  # 直接让字典写入文件(json自动帮你完成转换)
with open(r'b.txt','r',encoding='utf8') as f:
    # data = f.read()
    # res = json.loads(data)
    # print(res, type(res))
    res = json.load(f)
    print(res, type(res))  # {'name': 'jason', 'pwd': 123, 'age': 2} <class 'dict'>

image

4.4 json模块实参

1.涉及到用户数据的存储 可以单用户单文件

jason.json
kevin.json
oscar.json
import json

username = input('username>>>:').strip()
password = input('password>>>:').strip()
user_dict = {'username': username,
             'password': password,
             'balance': 15000,
             'shop_car':[]
             }
with open(r'%s.json'%username,'w',encoding='utf8') as f:
    json.dump(user_dict, f)

image
image

import json
import os

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)

image

import json
import os

base_dir = r'G:/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))

image

5.作业

5.1 编写一个统计指定文件类型的脚本工具输入指定类型的文件后缀 eg:.txt,并给出一个具体路径 之后统计该类型文件在该文件下的个数。

appoint_path = input('请输入文件指定路径:').strip()
path_suffix = input('请输入你统计的文件类型后缀:').strip()
count = 0
path_user = os.listdir(appoint_path)
print(path_user)
for file_name in path_user:
    if file_name.endswith(r'%s' % path_suffix):
        count += 1
print(f'{path_suffix}为后缀的文件个数为{count}')

image

5.2 针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便

import json
username = input('username>>:').strip()
password = input('password>>:').strip()
user_data = {username:password}
res = json.dumps(user_data)
with open(r'user_data.txt','a',encoding='utf8') as f:
    with open(r'user_data.txt', 'r', encoding='utf8') as f1:
        if res not in f1:
            f.write(res)
            f.write('/n')

image

5.3 有一个目录文件下面有一堆文本文件

eg:
    		db目录
            J老师视频合集
            R老师视频合集
            C老师视频合集
            B老师视频合集
	文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
 	用户选择哪个文件就自动打开该文件并展示内容
 	涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/275015.html

(0)
上一篇 2022年7月17日
下一篇 2022年7月17日

相关推荐

发表回复

登录后才能评论