模块(二)

os模块

      import os

# 创建文件夹
      os.mkdir(r'aaa')  # 创建单层目录  文件已存在时无法继续创建
      os.makedirs(r'bbb/ccc/ddd')  # 创建多级目录

# 删除目录
      os.rmdir(r'aaa')  # 删除单级的空目录
      os.removedirs(r'bbb/ccc/ddd')  # 删除单级目录,如果外层是空的则继续删除

# 查看文件路径下的所有文件名称
      print(os.listdir(r'E:\pythonProject2\day022'))
      print(os.listdir(r'C:\Users\Administrator\Desktop'))

# 删除文件、重命名文件
      os.removedirs(r'aaa')
      os.rename(r'aaa', r'aaaaa')

# 获取文件路径,切换文件路径
      print(os.getcwd())  # 获取执行文件所在的路径
      os.chdir(r'bbb/ccc/ddd')  # 改写文件所在路径
      print(os.getcwd())

# 软件开发目录规范,启动脚本兼容性
      os.path.dirname(__file__)  # 动态的获取当前文件所在的路径
      os.path.dirname(os.path.dirname(__file__))  # 嵌套一层就是往上一级路径走一次
      print(os.path.dirname(__file__))  # E:/pythonProject2/day022
      print(os.path.dirname(os.path.dirname(__file__)))  # E:/pythonProject2

# 判断文件、文件夹是否存在
      print(os.path.exists(r'aaaaa'))  # 判断所给路径是否存在
      print(os.path.exists(r'E:\pythonProject2\day022\bbb\ccc'))
      print(os.path.exists(r'E:\pythonProject2\day022\bbb\ddd'))

      print(os.path.isdir(r'aaaaa'))  # 判断路径是否是文件夹
      print(os.path.isdir(r'01.作业讲解.py'))  # 判断路径是否是文件夹
      print(os.path.isfile(r'aaa'))
      print(os.path.isfile(r'01.作业讲解.py'))  # 判断路径是否是文件

# 文件路径拼接
      res ='aaaaa'+'/'+'bbb'  # 加号兼容性较差
      print(res)
      res = os.path.join('aaaaa', 'bbb')  # 使用join拼接路径会直接识别系统所需的分隔符
      print(res)

# 文件大小
      print(os.path.getsize(r'01.作业讲解.py'))  # 结果为字节数

sys模块

      import sys

      print(sys.path)  # 获取文件所在的sys.path
      print(sys.version)  # 获取解释器版本
      print(sys.platform)  # 获取平台信息
      print(sys.argv)  # 自定义命令
      '''
      if len(sys.argv) == 3:
          username = sys.argv(1)
          password = sys.argv(2)
          if username == 'oliver'and password == '123':
              print('yes')
          else:
              print('no')
      else:
          print('输入用户名,不能多写或漏写')
      '''

json模块(序列化)

      import json

      dic = {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'}
      print(dic, '\n', type(dic))

      res = json.dumps(dic)  # 将字典转换成json格式
      print(res, '\n', type(res))  # {"name1": "oliver", "name2": "kevin", "name3": "jerry"}  <class 'str'>
      '''
       json格式数据是字符串类型,并且双引号是字符串的标志符号
      '''

      print(str(dic), '\n', type(str(dic)))  # {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'}  <class 'str'>

      dic = {"name1": "oliver", "name2": "kevin"}
      print(dic, type(dic))
      dic = '{"name1": "oliver", "name2": "kevin"}'
      print(dic, type(dic))  # 算是json格式

      dic = {'name1': 'kevin', 'name2': 'kevin'}
      res = json.dumps(dic)  # 将dic转换为(序列化)json格式
      str1 = res.encode('utf8')  # 对res进行utf8编码
      print(str1)

      json_str = str1.decode('utf8')  # 解码之后的格式首先是json格式数据
      print(json_str, type(json_str))
      res1 = json.loads(json_str)  # 然后将数据从json格式转换为(反序列化)原格式
      print(res1, type(res1))

      '''
      序列化:将python数据类型转换为json格式
      反序列化:将json格式数据转换为对应数据类型

      json模块配合文件使用时
      json.dump()  # 自动将数据转为json格式,然后写入文件(自动序列化)
      json.load()  # 将文件里的数据直接转为其他数据取出(自动反序列化)
      '''

支持序列化的数据类型

python数据类型 json对应类型
dict object
list array
tuple array
str string
int number
float number
True true
False false
None null

subprocess模块

      import subprocess

      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'))

posted @ 2022-03-31 18:13  Oliver-Chance  阅读(24)  评论(0编辑  收藏  举报