常见内置模块

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模块(序列化模块)

简介

序列化:将原本的字典、列表等内容转换成字符串的过程

序列化的目的:

  1. 以某种存储形式使自定义对象持久化
  2. 将对象从一个地方传递到另一个地方
  3. 让程序更具维护性

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 2022-07-15 19:31  念白SAMA  阅读(66)  评论(0)    收藏  举报