模块之os,json,subprocess

今日内容概要

  • os模块
  • sys模块
  • json模块(重要)
  • subprocess模块

os模块

1. 创建目录(文件夹)
os.mkdir() # 创建一个目录
os.makedirs() # 创建多层目录
2. 删除目录
os.rmdir() # 删除单个目录
os.removedirs() # 删除单级目录,若外层目录也为空就继续删除[由内而外的删除]
3.查看某个路径下所有的文件名称[文件夹,文件]
os.listdir()
4.删除文件,重命名文件
os.remove()
os.rename()
5.获取当前路径,切换路径
os.getcwd()  # 获取当前路径
os.chdir()   # 更改路径 changedir
6.软件开发目录规范,启动脚本兼容性操作
os.path.dirname(__file__) # 动态获取当前执行文件所在的绝对路径
os.path.dirname(os.path.dirname(__file__))  # 每嵌套一层就是网上切换一层
os.path.abspath(__file__)) # 获取当前执行文件自身的路径
7.判断文件是否存在
os.path.exists()
os.path.isdir() # 判断路径是否是同一个文件夹
os.path.isfile()  # 判断路径是否是一个文件
8.路径拼接
拼接成py文件
base_dir = 'atm
exe_dir = '01 作业讲解.py'
print(base_dir + '/' + exe_dir) # 路径分隔符在不同的系统下是不一样的, 使用加号的话兼容性差
res = os.path.join(base_dir,exe_dir)
print(res) # 能够自动识别当前操作系统的分隔符
9. 获取文件大小(字节 bytes)
os.path.getsize()  # 汉字占三个字节

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('请输入用户名和密码 不能漏写或多写')

json模块

'''json是一个序列化模块 主要用于跨语言传输数据'''
1.json格式数据是不同变成语言之间数据交互的媒介
2.json格式数据的具体特征
	1. 数据基于网络传输是二进制格式
  在python中bytes类型的数据可以直接看成是二级制数据
  	python中只有字符串可以转成bytes类型(编码encode())
    由上可知 json格式数据 本质应该属于字符串类型	
双引号是json格式数据独有的标志符号!!!
import json
d = {'username':'jason','pwd':123}
print(d, type(d))  # {'username': 'jason', 'pwd': 123} <class 'dict'>
res = json.dumps(d)
print(res, type(res))  # {"username": "jason", "pwd": 123} <class 'str'>
print(str(d),type(str(d)))  # {'username': 'jason', 'pwd': 123} <class 'str'>

json.dump()\ json.loads()

json.dumps()        序列化
    将python数据类型转换成json格式字符串

import json

d = {'username': 'jason', 'pwd': 123}
print(d, type(d))  # {'username': 'jason', 'pwd': 123} <class 'dict'>
res = json.dumps(d)
print(res, type(res))  # {"username": "jason", "pwd": 123} <class 'str'>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
json.loads()        反序列化
    将json格式字符串转换成对应的数据类型

json_str = encode_str.decode('utf8')
print(json_str,type(json_str))
res1 = json.loads(json_str)
print(res1, type(res1))  # {'username': 'jason', 'pwd': 123} <class 'dict'>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果json模块需要配合文件一起使用的话 有固定的方法
json.dump()
    将其他数据类型直接写入文件(自动转json格式字符串)
json.load()
    将文件数据直接转成对应的数据类型(自动反序列化)

'''将字典存入文件,再取出来还是一个字典类型'''

d = {'username':'jason', 'pwd':123}
with open(r'a.txt', 'w', encoding = 'utf8') as f:
	f.write(json.dumps(d))
with open(r'a.txt', 'r', encoding='utf8') as f:
	data = json.load(f)
	print(data, type(data))  # {'username':'jason', 'pwd':123} <class 'dict'>

### 强调:不是所有的数据类型都支持序列化
    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+

subprocess 模块

import subprocess

# ls在终端的意思就是查看当前路径下所有的文件名称
res = subprocess.Popen('ls',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )
print('stdout',res.stdout.read().decode('utf8'))  # 获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('utf8'))  # 获取错误命令执行之后的结果
"""
该模块可以实现远程操作其他计算机的功能
    动态获取命令执行并返回结果
        eg:类似于Xshell软件的功能
"""

posted @ 2022-03-30 21:52  Yietong  阅读(41)  评论(0)    收藏  举报