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

一、OS模块

二、sys模块

三、json模块

四、pickle模块

五、subprocess模块

一、os模块

1、创建目录(文件夹)

     """ os模块主要是跟操作系统打交道  """
mkdir    makedirs
# 使用import
import os
os.mkdir(r'aaa') 
# 使用相对路径,在当前执行文件所在的路径下创建一个aaa文件夹
os.mkdir(r'bbb\ccc')  # 发生报错,mkdir只能创建单级目录

q2pGAx.jpg

import os
os.makedirs('bbb')
os.makedirs(r'aaa\bbb\ccc')  
# makedirs可以创建单级目录,也支持创建多级目录

2、删除目录(文件夹)

rmdir  removedirs
import os
os.rmdir(r'111')  # rmdir可以删除单级目录
os.rmdir(r'bbb')  # 不可以删除多级目录
os.removedirs(r'ccc')  # 可以删除单级目录
# 想要删除多级目录,使用绝对路径
# Copy path
os.removedirs(r'F:\PycharmProjects\pythonProject5\bbb\ccc\ddd')  # 删除所选的目录之后,外层的目录如果也是空的那么会一直删

q2Vu3q.jpg

q2VMvV.jpg

3 、查看某个路径下所有的文件名称

listdir
import os
print(os.listdir())  # 获取文件名称
# ['.idea', 'a.txt', 'os模块.py', '京东模拟.py', '爬虫.py', '练习.py']
print(os.listdir(r'\PycharmProjects'))

q2Z2o4.jpg

4、删除文件、重命名文件

remove   rename
import os
os.remove(r'c.txt')   # 删除文件 
os.rename(r'b.txt', r'bbb.txt')  # 重命名文件

q2me4H.jpg

5、获取当前路径、切换路径

getcwd  getcwd
# 获取当前路径
import os
print(os.getcwd())
#  F:\PycharmProjects\pythonProject5
# 切换路径
os.chdir(r'\PycharmProjects\pythonProject4')
print(os.getcwd())
#  F:\PycharmProjects\pythonProject4

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

dirname  abspath
import os
print(os.path.dirname(__file__))  # 动态获取当前执行文件的绝对路径
#  F:/PycharmProjects/pythonProject5

print(os.path.dirname(os.path.dirname(__file__)))
# F:/PycharmProjects  嵌套一次就会往上获取一次路径

print(os.path.abspath(__file__))
#  F:\PycharmProjects\pythonProject5\os模块.py

7、判断文件是否存在

exists 
import os 
# 判断所给的路径是否存在
print(os.path.exists(r'aaa'))  # True
# 判断所给的路径是否存在
print(os.path.exists(r'os模块.py'))  # True

q23DN6.jpg

isdir
import os
print(os.path.isdir(r'aaa'))  # 判断是不是文件件
print(os.path.isdir(r'os模块.py'))  # 判断是不是文件夹

isfile
print(os.path.isfile(r'aaa'))  # 判断路径是不是在当前文件是不是同一个文件

q28GVI.jpg

8、拼接路径

base_dir = 'aaa'
exe_dir = 'os模块.py'
# 拼接到py文件的路径
print(base_dir + '\\' + exe_dir)  # 路径分隔符在不同系统不一样,所以兼容性极差
res = os.path.join(base_dir, exe_dir)  # 能够自动识别当前操作系统的分隔符
print(res)

q2Jr40.jpg

9 、获取文件大小(字节数,bytes)

print(os.path.getsize(r'aaa')) 
print(os.path.getsize(r'c.txt'))
# c.txt文件里面是hello北京
# 11 bytes 
# 统计文件大小使用的是字节数

二、sys模块

"""主要是跟python解释器打交道"""
import sys
# 1.列举当前执行文件所在的sys.path
print(sys.path)  # 太多了不复制了

# 2.获取解释器版本信息
print(sys.version)
# 3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)]

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

# 4.自定义命令行操作
print(sys.argv)
"""
 cmd终端可以使用windows+r并输入cmd唤起
 也可以在pycharm直接使用快捷方式Terminal
  模拟cmd并自动切换到当前执行文件所在的路径下
"""
import sys
if len(sys.argv) == 3:  # 这里的判断也可以变成异常捕获的形式
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'owen' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')
else:
    print('请输入用户名和密码 不能漏写或多写')

q2BOr6.jpg

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

q2DuGj.jpg

三、json模块

1、json格式数据是不同编程语言之间的数据交换的媒介

q2yYo8.jpg

2、json格式数据的具体特征
 """ 数据是基于网络传输肯定是二进制格式化
     在Python中bytes类型的数据可以直接看成二进制数据
     但是只有字符串可以转成bytes类型
 """
# 双引号是json格式数据独有的标志符号
import json
d = {'username': 'owen', 'pwd': 123}
print(d, type(d))
res = json.dumps(d)
print(res, type(res))
print(str(d),type(str(d)))
# 就算把数据类型转换成字符串,也还是单引号

q2cwbq.jpg

import json
d1 = {"username": "owen", "pwd": 123}
print(d1)
res1 = '{"username":"owen","pwd":123}'
print(res1)

q2cXqI.jpg

1、具体操作

import json
d = {'username': 'owen', 'pwd': 123}
res = json.dumps(d)  # dumps 序列化,将python数据类型转换成json格式字符串
print(res, type(res))
encode_str = res.encode('utf8')
'''假设将该字符串基于网络发给了另外一个python程序'''
# 先将bytes类型转换成字符串
json_str = encode_str.decode('utf8')
print(json_str,type(json_str))
res1 = json.loads(json_str)  # loads,反序列化将json格式字符串转换成对应的数据类型
print(res1, type(res1))

q22E1e.jpg

import json
d = {'username': 'owen', 'pwd': 123}
# 将上述字典写入文件
with open(r'a.txt', 'w', encoding='utf8') as f:
    # f.write(d)
    # f.write(str(d))
    # f.write(json.dumps(d))
    json.dump(d, f)  # 序列化
with open(r'a.txt', 'r', encoding='utf8') as f:
    # data = f.read()
    # res = json.loads(data)
    # print(res, type(res))
    data = json.load(f)  # 反序列化
    print(data, type(data))
    
 """
如果json模块需要配合文件一起使用的话 有固定的方法
json.dump()
    将其他数据类型直接写入文件(自动转json格式字符串)
json.load()
    将文件数据直接转成对应的数据类型(自动反序列化)
""" 

2、支持序列化的数据类型

    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+

四、pickle模块

因为只能识别python代码,所以基本不用

五、subprocess模块

import subprocess
res = subprocess.Popen('dir',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )
print('stdout', res.stdout.read().decode('utf8', 'ignore'))  # 如果不适用ignore会发生报错
print('stderr', res.stderr.read().decode('utf8'))
"""
该模块可以实现远程操作其他计算机的功能
    动态获取命令执行并返回结果
        eg:类似于Xshell软件的功能
"""

q24T0J.jpg

posted @ 2022-03-30 21:47  未月  阅读(61)  评论(0)    收藏  举报