os、json、sys、subprocess模块

os模块

import os
1.创建目录(文件夹)
os.mkdir(r'a')  # 相对路径 只能创建单级目录
os.makedirs(r'a\b')  # 可以创建单级和多及目录
2.删除目录
os.mkdir(r'a')  # 只能删除单级空目录
os.removedirs()  # 可以删除单级目录
os.removedirs()   # 删除目录之后如果外层的目录也是空的则继续删除  
3.查看某个路径下所有的文件名称(文件、文件夹)
os.listdir()
4.删除文件、重命名文件
os.remove(r'a.txt')
os.rename(r'a.txt', r'aaa.txt')
5.获取当前路径、切换路径
os.getcwd()
os.chdir(r'\user\python')
6.软件开发目录规范 启动脚本兼容性操作
os.path.dirname(__file__)  # 动态获取当前执行文件所在的绝对路径  D\day21
os.path.dirname(os.path.dirname(__file__))  # 每嵌套一层就是往上切换一层  D\
os.path.abspath(__file__)  # 动态获取当前执行文件自身的路径  D\day21\a.py
7.判断文件是否存在
os.path.exists(r'ATM')  # True  判断所给的路径是否存在
os.path.exists(r'01 作业讲解.py')  # True  判断所给的路径是否存在
os.path.isdir(r'ATM')  # True  判断路径是否是一个文件夹
os.path.isfile(r'01 作业讲解.py')  # True  判断路径是否是一个文件
8.拼接路径(极容易忽略)
base_dir = 'ATM'
exe_dir = '01 作业讲解.py'
res = os.path.join(base_dir, exe_dir)  # 能够自动识别当前操作系统的分隔符
9.获取文件大小(字节  bytes)
print(os.path.getsize(r'ATM'))  # 128bytes
print(os.path.getsize(r'a.txt'))  # 14bytes

习题

# 选择指定文件并打开浏览(目前只考虑文本文件即可)

# 展示某个文件下所有的文件名称 用户选择哪个就打开哪个
import os
# 1.先获取目标文件路径(动态获取 也可以省事先写死)
target_path = os.path.dirname(__file__)
# 2.列举该路径下所有的文件名称
full_path = os.path.join(target_path, '文件集合')
file_list = os.listdir(full_path)
while True:
    # 3.循环展示每个文件名称
    for i, j in enumerate(file_list, start=1):
        print(i, j)
    # 4.获取用户选择的编号
    target_num = input('请输入查看文件编号:').strip()
    # 5.判断是否是纯数字
    if target_num.isdigit():
        # 6.如果是纯数字 转换成整型
        target_num = int(target_num)
        # 7.判断数字在不在数量范围内
        if target_num in range(1, len(file_list)+1):
            # 8.获取文件名称
            file_name = file_list[target_num-1]
            # 9.拼接完整路径
            full_file_path = os.path.join(full_path, file_name)
            # 10.文件操作打开文件
            with open(full_file_path, 'r', encoding='utf8') as f:
                print(f.read())
        else:
            print('没有编号的文件')
    else:
        print('编号只能是数字')

sys模块

"""该模块主要是跟python解释器打交道"""
import sys
# 1.列举当前执行文件所在的sys.path(掌握)
# print(sys.path)
# 2.获取解释器版本信息(了解)
# print(sys.version)
# 3.获取平台信息(了解)
# print(sys.platform)
# 4.自定义命令行操作
# print(sys.argv)
"""
cmd终端可以使用windows+r并输入cmd唤起
也可以在pycharm直接使用快捷方式Terminal
    模拟cmd并自动切换到当前执行文件所在的路径下
"""

if len(sys.argv) == 3:  # 这里的判断也可以变成异常捕获的形式
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'jason' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')
else:
    print('请输入用户名和密码 不能漏写或多写')

 
try:
    username = sys.argv[1]
    password = sys.argv[2]
except Exception:
    print('请输入用户名和密码')
else:
    if username == 'jason' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')

json模块

'''json是一个序列化模块 主要用于跨语言传输数据'''
1.参考群内截图得知json格式数据是不同变成语言之间数据交互的媒介
2.json格式数据的具体特征
	结论1中有一个小细节>>>:数据基于网络传输肯定是二进制格式
  在python中bytes类型的数据可以直接看成是二级制数据
  	python中哪些数据可以转成bytes类型(编码encode())
    	只有字符串可以!
由上述推论可知 json格式数据 本质应该属于字符串类型

# 双引号是json格式数据独有的标志符号!!!
import json
d = {'name': 'bob', 'pwd': 111}
print(d, type(d))
res = json.dumps(d)
print(res, type(res))

具体操作

"""
json.dumps()        序列化
    将python数据类型转换成json格式字符串
json.loads()        反序列化
    将json格式字符串转换成对应的数据类型
"""
import json
d = {'name': 'bob', 'pwd': 111}
# 将上述字典写入文件
with open(r'a.txt','w',encoding='utf8') as f:
     json.dump(d, f)
# 将文件内容获取出来
with open(r'a.txt','r',encoding='utf8') as f:
    data = json.load(f)
    print(data, type(data))
    
# 强调:不是所有的数据类型都支持序列化
"""
    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+
""" 

pickle模块

# 基本不用
	因为它不支持跨语言传输 只能识别python代码
'''直接忽略 不用掌握'''

subprocess模块

import subprocess

# dir在终端的意思就是查看当前路径下所有的文件名称
res = subprocess.Popen('dir',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )
print('stdout', res.stdout.read().decode('utf8', 'ignore'))  # 获取正确命令执行之后的结果
print('stderr', res.stderr.read().decode('utf8'))  # 获取错误命令执行之后的结果
"""
该模块可以实现远程操作其他计算机的功能
    动态获取命令执行并返回结果
        eg:类似于Xshell软件的功能
"""
"""
该模块可以实现远程操作其他计算机的功能
    动态获取命令执行并返回结果
        eg:类似于Xshell软件的功能
"""
posted @   末笙  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示