os-sys-json-pickle-subprocess

os模块

# 该模块主要是跟操作系统打交道
  import os 
  # 1.创建目录(文件夹)
   os.mkdir(r'aaa')  # 使用相对路径 在当前执行文件所在的路径下创建一个aaa文件夹
   os.mkdir(r'bbb/ccc')  # mkdir只能创建单级目录
   os.makedirs(r'ccc')  # makedirs可以创建单级目录
   os.makedirs(r'bbb/ccc/ddd')  # makedirs支持创建多级目录

  # 2.删除目录(文件夹)
   os.rmdir(r'aaa')  # 可以删除单级目录
   os.rmdir(r'bbb')  # 只能删空的单级目录
   os.removedirs(r'ccc')  # 可以删除单级目录
   os.removedirs(r'/Users/jiboyuan/PycharmProjects/day21/bbb/ccc/ddd')  # 删除目录之后如果外层的目录也是空的则继续删除

  # 3.查看某个路径下所有的文件名称(文件、文件夹)
   print(os.listdir())
   print(os.listdir(r'/Users'))

# 4.删除文件、重命名文件
   os.remove(r'a.txt')
   os.rename(r'a.txt', r'aaa.txt')

  # 5.获取当前路径、切换路径
   print(os.getcwd())
   os.chdir(r'/Users/jiboyuan')
   print(os.getcwd())

  # 6.软件开发目录规范 启动脚本兼容性操作
   os.path.dirname(__file__)  # 动态获取当前执行文件所在的绝对路径       D:\day21
   os.path.dirname(os.path.dirname(__file__))  # 每嵌套一层就是往上切换一层  D:\
   print(os.path.abspath(__file__))  # 动态获取当前执行文件自身的路径     D:\day21\a.py

  # 7.判断文件是否存在
   print(os.path.exists(r'ATM'))  # True  判断所给的路径是否存在
   print(os.path.exists(r'01 作业讲解.py'))  # True  判断所给的路径是否存在
   print(os.path.isdir(r'ATM'))  # True  判断路径是否是一个文件夹
   print(os.path.isdir(r'01 作业讲解.py'))  # False  判断路径是否是一个文件夹
   print(os.path.isfile(r'ATM'))  # False  判断路径是否是一个文件
   print(os.path.isfile(r'01 作业讲解.py'))  # True  判断路径是否是一个文件

  # 8.拼接路径(极容易忽略)
   base_dir = 'ATM'
   exe_dir = '01 作业讲解.py'
  '''拼接成py文件的路径'''
   print(base_dir + '/' + exe_dir)  # 路径分隔符在不同的系统下是不一样的  使用加号的话兼容性极差
   res = os.path.join(base_dir, exe_dir)  # 能够自动识别当前操作系统的分隔符
   print(res)

  # 9.获取文件大小(字节  bytes)
   print(os.path.getsize(r'ATM'))  # 128bytes
   print(os.path.getsize(r'a.txt'))  # 14bytes

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 == 'wql' and password == '123':
           print('可以正常执行该文件')
       else:
           print('用户名或密码错误 没有该文件的执行权限')
   else:
       print('请输入用户名和密码 不能漏写或多写')


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

json模块

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

  '''双引号是json格式数据独有的标志符号'''
   d = {"username":"wql","pwd":123}
   print(d)  # {'username': 'wql', 'pwd': 123}  不是
  res1 = '{"username":"wql","pwd":123}'
  print(res1)  # {"username":"wql","pwd":123}  算json格式

json模块的具体操作写法

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

小知识

# 如果不能理解json看这行代码操作解释
  d = {'username': 'wql', '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)  # 得用json模块进行反序列化取出
      # print(res, type(res))
      data = json.load(f)  # 可以直接一行代码将代码进行读出
      print(data, type(data))

  '''
    如果json模块需要配合文件一起使用的话  有固定的方法
      json.dump()
        将其他数据类型直接写入文件(自动转json格式字符串)
      json.load()
        将文件数据直接转成对应的数据类型(自动反系列化)
  '''

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

pickle模块

# 基本不用
    因为他不支持跨语言传输  只能识别python代码
    '''可以先了解一点,后面再慢慢掌握'''

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软件的功能
  """
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lamb!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值