datetime时间模块
import datetime
res = datetime.datetime.today()
print(res) # run:2022-07-15 15:01:21.440101
"输出执行时的时间"
print(res.date()) # run:2022-07-15
"只输出执行时的年月日"
print(res.time()) # run:15:01:21.440101
"只输出执行时的时分秒微秒"
print(res.year) # run:2022
"只输出执行时的年"
print(res.month) # run:7
"只输出执行时的月"
print(res.isoweekday()) # run:5
"只输出执行时的日"
t1 = datetime.timedelta(days=5)
"设置时间差"
print(res + t1) # run:2022-07-20 15:01:21.440101
"输出执行时间加设置好的时间差"
os模块
import os
os.mkdir(r'a1') # 创建一个目录
os.mkdir(r'a1\a2') # 无法创建多级目录
os.makedirs(r'a1\a2') # 可以创建多级目录
import os
os.rmdir(r'aa') # 删除单级目录
os.rmdir(r'a1') # 目录内部有其他数据则无法删除
os.removedirs(r'a1') # 目录内有数据也无法直接删除
os.removedirs(r'a1\a2') # 可以由内而外一层层删除空目录
import os
print(os.listdir(r'D:\\PY01')) # 将路径下的文件名称组成列表输出
run:['.idea', 'cc.py', 'ma.py', 'mb.py', 'test.01.py', '__pycache__']
print(os.listdir()) # 不输入路径就是执行文件所在的目录
run:['.idea', 'cc.py', 'ma.py', 'mb.py', 'test.01.py', '__pycache__']
import os
os.rename(r'cc.py', r'ccc.py') # 可以修改路径文件的文件名
os.remove(r'ccc.py') # 可以删除路径文件的文件名
import os
print(os.getcwd()) # 获取文件路径
run:D:\PY01
os.chdir(r'..') # 在该执行文件的上一层
os.mkdir(r'aaa') # 创建一个名叫aaa的文件夹
print(os.getcwd()) # 获取新建文件夹的路径
run:D:\
- path.abspath和path.dirname获取文件路径
import os
print(os.path.abspath(__file__)) # 获取当前执行文件的文件路径
# run:D:\PY01\ma.py
print(os.path.dirname(__file__)) # 获取当前执行文件的目录路径
# run:D:/PY01
import os
print(os.path.exists(r'bb')) # 该文件不存在
# rum:False
print(os.path.exists(r'ma.py')) # 该文件存在
# run:True
print(os.path.exists(r'D:\PY01')) # 该文件路径存在
# run:True
print(os.path.isdir(r'D:\PY01\ma.py')) # 该路径不是目录
# run:False
print(os.path.isdir(r'PY01')) # 不能直接判断目录是否存在
# run:False
print(os.path.isdir(r'D:\PY01')) # 该路径是目录
# run:True
print(os.path.isfile(r'D:\PY01')) # 文件路径不是目录
# run:False
print(os.path.isfile(r'D:\PY01\ma.py')) # 文件路径是文件
# run:True
print(os.path.isfile(r'mb.py')) # 可以直接用文件名判断和执行文件在同一目录的文件是否存在
# run:True
import os
file_path = 'a.txt'
folder_path = r'D:\PY01'
res = os.path.join(folder_path, file_path) # 将路径拼接在一起
print(res)
# run:D:\PY01\a.txt
- path.getsize可以获取指定文件的大小(bytes)
import os
print(os.path.getsize(r'D:\PY01\mb.py')) # 可以根据文件路径指定
# run:13
print(os.path.getsize(r'mb.py')) # 可以用和执行文件在同一目录的文件名指定
# run:13
sys模块
import sys
print(sys.path) # 当前执行文件的系统变量
print(sys.version) # 查看解释器的版本等信息
print(sys.platform) # 查看当前平台
"""argv可以用cmd终端来执行"""
res = sys.argv
if len(res) == 3: # 判断是否输入了账号密码
name = res[1] # 将用户输入的用户名取出绑定名字
password = res[2] # 将用户输入的密码取出绑定名字
if name == 'barry' and password == '123': # 判断用户名和密码是否正确
print('执行该文件')
else:
print('用户名或密码错误')
else:
print('请填写用户名和密码')
json模块
json模块也叫序列化模块,各种编程语言之间数据交互配合就需要用到json模块,数据只能以二进制在网络中传输,而python中只有字符串可以调用encode方法将代码转为二进制,使用json格式的数据类型也是字符串,
- dumps可以将其他数据类型转换为json格式的字符串
import json
data = {'name': 'barry', 'pwd': 123}
res = json.dumps(data) # 转换成json格式字符串
print(res, type(res))
# run:{"name": "barry", "pwd": 123} <class 'str'>
with open(r'a.txt', 'w', encoding='utf8')as f:
f.write(res)
- loads可以将json格式的字符串转换回对应的数据类型
with open(r'a.txt', 'r', encoding='utf8')as f:
data1 = f.read()
res1 = json.loads(data1) # json格式字符串转换回对应的数据类型
print(res1, type(res1))
# run:{'name': 'barry', 'pwd': 123} <class 'dict'>
- dump可以将其他数据类型转换为json格式的字符串写入文件
- load可以将json格式的字符串读取出来转换回对应的数据类型
import json
data = {'name': 'barry', 'pwd': 123}
with open(r'a.txt', 'w', encoding='utf8')as f:
json.dump(data, f)
with open(r'a.txt', 'r', encoding='utf8')as f:
res = json.load(f)
print(res, type(res))
# run:{'name': 'barry', 'pwd': 123} <class 'dict'>
作业1
# 1.编写一个统计指定文件类型的脚本工具
# 输入指定类型的文件后缀
# eg:.txt
# 并给出一个具体路径 之后统计该类型文件在该文件下的个数
# ps:简单实现即可 无需优化
import os
l1 = []
res = os.listdir(r'D:\PY01')
info = input('输入指定类型的文件后缀>>>:').strip()
for i in res:
if info in i:
l1.append(i)
print(len(l1))
作业2
# 2.针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便
import json
name = input('请输入用户名>>>:').strip()
with open(r'a.txt', 'r', encoding='utf8')as f:
for i in f:
res = json.loads(i)
if name == res['name']:
print('该用户名已存在')
break
else:
pwd = input('请输入密码>>>:').strip()
data = {'name': name, 'pwd': pwd}
with open(r'a.txt', 'a', encoding='utf8')as af:
json.dump(data, af)
af.write('\n')
作业3
# 3.编程小练习
# 有一个目录文件下面有一堆文本文件
# eg:
# db目录
# J老师视频合集
# R老师视频合集
# C老师视频合集
# B老师视频合集
# 文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
# 用户选择哪个文件就自动打开该文件并展示内容
# 涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
import os
data = ['J老师视频合集.txt',
'R老师视频合集.txt',
'C老师视频合集.txt',
'B老师视频合集.txt']
print(data)
file = input('输入打开的文件名>>>:').strip()
info = os.path.dirname(__file__)
if file in data:
func = os.path.join(info, file)
with open(f'{func}', 'r', encoding='utf8')as f:
res = f.read()
print(res)
else:
print('没有该文件')