os模块与sys模块与json模块

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
"输出执行时间加设置好的时间差"
img

os模块

  • mkdir和makedirs可以创建目录
import os

os.mkdir(r'a1')  # 创建一个目录
os.mkdir(r'a1\a2')  # 无法创建多级目录
os.makedirs(r'a1\a2')  # 可以创建多级目录
  • rmdir和removedirs可以删除目录
import os

os.rmdir(r'aa')  # 删除单级目录
os.rmdir(r'a1')  # 目录内部有其他数据则无法删除
os.removedirs(r'a1')  # 目录内有数据也无法直接删除
os.removedirs(r'a1\a2')  # 可以由内而外一层层删除空目录
  • listdir会将路径下的文件名称组成列表输出
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__']
  • rename和remove
import os

os.rename(r'cc.py', r'ccc.py')  # 可以修改路径文件的文件名
os.remove(r'ccc.py')  # 可以删除路径文件的文件名
  • getcwd可以输出当前执行文件的文件路径
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
  • path.exists判断文件或文件路径是否存在
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
  • path.isdir判断路径是否是目录
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
  • path.isfile判断路径是否是文件
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
  • path.join可以拼接路径
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
img

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模块也叫序列化模块,各种编程语言之间数据交互配合就需要用到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('没有该文件')
posted @ 2022-07-15 22:17  无言以对啊  阅读(39)  评论(0)    收藏  举报