Loading

os模块、sys模块、json模块、subprocess模块

猫咪头拿玫瑰 - 猫咪头拿玫瑰表情包-发表情

os模块

创建目录(文件夹)

os.mkdir(r'a')  # 使用相对路径,在当前执行文件所在的路径下创建一个a文件夹,只能创建单级目录
os.makedirs(r'ccc')  # makedirs可以创建单机目录,也支持创建多级目录


删除目录(文件夹)

os.ramdir(r'aaa')  # 可以删除单级别目录,但只能删空的单级别目录
os.removerdirs(r'ccc')  # 可以删除单级别目录
os.removedirs(r'E:\Pythonexercise\day21\aaa\bbb\ccc')  # 删除目录之后如果外层的目录也是空的则继续删除

查看某个路径下所有的文件名称(文件、文件夹)

print(os.listdir())  # 相对路径,此执行文件下的所有文件列表 ['.idea', 'a.txt', 'aaaaa', 'except.py'] 
print(os.listdir(r'/Users'))  # 该路径下的所有文件列表

删除文件、重命名文件

os.remove(r'a.txt')  # 删除此文件,默认相对路径,也可以使用绝对路径
os.rename(r'a.txt', r'aaa.txt')  # 重命名文件,将a.txt改为aaa.txt,默认相对路径,可使用绝对路径

获取当前路径、切换路径

os.getcwd()  # 获取当前路径
os.chdir()  # 切换路径
print(os.getcwd())  # E:\Pythonexercise\day21
os.chdir(r'C:\Users')
print(os.getcwd())  # C:\Users

软件开发目录规范 启动脚本兼容性操作

os.path.dirname(__file__)  # 动态获取当前执行文件所在的绝对路径 E:/Pythonexercise/day21
os.path.dirname(os.path.dirname(__file__))  # 每嵌套一层就是往上切换一层 E:/Pythonexercise
os.path.abspath(__file__)  # 动态获取当前执行文件自身的路径  E:\Pythonexercise\day21\except.py

判断文件是否存在

print(os.path.exists(r'a.txt'))  # True  判断所给的路径是否存在
print(os.path.isdir(r'a.txt'))  # False 判断路径是否是一个文件夹
print(os.path.isdir(r'aaaaa'))  # True  判断路径是否是一个文件夹

拼接路径

os.path.join(a,b)  # 能够自动识别当前操作系统的分隔符
# eg:
base_dir = 'aaaaa'
exe_dir = 'b.py'
res = os.path.join(base_dir,exe_dir)
print(res)  # 能够自动识别当前操作系统的分隔符 aaaaa\b.py

获取文件大小(字节 bytes)

os.path.getsize(文件名)  # 获取文件大小,括号内可以填写绝对路径
print(os.path.getsize(r'except.py'))  # 989bytes
print(os.path.getsize(r'a.txt'))  # 13bytes
猫咪头拿玫瑰

sys模块

列举当前执行文件所在的sys.path(掌握)

print(sys.path)  # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
"""
cmd终端可以使用windows+r并输入cmd唤起
也可以在pycharm直接使用快捷方式Terminal
    模拟cmd并自动切换到当前执行文件所在的路径下
"""

获取解释器版本信息(了解)

print(sys.version)  # 获取Python解释程序的版本信息

获取平台信息(了解)

print(sys.platform)  # 获取平台信息

自定义命令行操作(模拟cmd终端)

print(sys.argv)  # 自定义命令行操作

模拟练习

模拟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是一个序列化模块,主要用于跨语言传输数据
jaon格式数据的具体特征:
  	数据基于网络传输肯定是二进制格式
    在python中byter类型的数据可以直接看成是二进制数据
    python中只有字符串可以转成bytes类型(编码encode())
# 根据上述推论可知,json个格式数据本质应该属于字符串类型
# 双引号是json格式数据独有的标志符号

使用

json.dumps()  # 序列化      将python字符串转为json格式字符串
json.loads()  # 反序列化  将json格式字符串转换成对应的数据类型
jsom.dump()、json.load()来编码和解码JSON数据,用于处理文件。
eg:
import json
d = {'username': 'tuzi', 'pwd': 123}
with open(r'a.txt','w',encoding='utf8') as f:
    # f.write(d)  # 报错,文件只能写入字符串格式
    # f.write(str(d))  # {'username': 'tuzi', 'pwd': 123}
    f.write(json.dumps(d))  # {"username": "tuzi", "pwd": 123}
    # json.dump(d,f)  # {"username": "tuzi", "pwd": 123}
with open(r'a.txt','r',encoding='utf8') as f1:
    # data = f.read()
    # print(data,type(data))  # 普通方式 {'username': 'tuzi', 'pwd': 123} <class 'str'>
    data1 = json.load(f1)
    print(data1,type(data1))  # {'username': 'tuzi', 'pwd': 123} <class 'dict'>  直接返回字典格式
    
    
"""
res1 = '{"username":"jason","pwd":123}'
print(res1)  # {"username":"jason","pwd":123}  
字符串直接这样写成双引号可以算是json格式
"""

支持序列化的数据类型

数据类型 JSON
dict object
list,tuple array
str string
int,float number
True true
False false
None null
猫咪头拿玫瑰

subprocess模块

作用

"""
该模块可以实现远程操作其他计算机的功能
动态获取命令执行并返回结果
"""

eg:

import subprocess
res = subprocess.Popen('dir',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )
print('stdout',res.stdout.read().decode('gbk'))  # 获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('gbk'))  # 获取错误命令执行之后的结果
猫咪头拿玫瑰 is for you
posted @ 2022-03-30 19:22  香菜根  阅读(49)  评论(0编辑  收藏  举报