今日内容概要

1.os模块

2.sys模块

3.json模块

4.subprocess模块

今日内容详细

os模块

"""该模块主要是跟操作系统打交道"""
import os

1.创建目录(文件夹)

os.mkdir(r'aaa') # 使用相对路径 在当前执行文件所在的路径下创建一个aaa文件夹
os.mkdir(r'bbb/ccc') # 报错 mkdir 只能创建单极目录

os.makedirs(r'aaa') # 与mkdir一样
os.makedirs(r'bbb/ccc') # 可以创建多级目录

2.删除目录(文件夹)

os.rmdir(r'aaa') # 可以删除单级目录 只能删空的单极目录

os.removedirs(r'ccc') # 可以删除单级目录
os.removedirs(r'路径') # 删除目录之后如果外层的目录也是空的则继续删除

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

print(os.listdir())
print(os.listfir(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并自动切换到当前执行文件所在的路径下
"""

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

d = {"username":"jason","pwd":123}
print(d) # {'username': 'jason', 'pwd': 123} 不是json格式
res1 = '{"username":"jason","pwd":123}'
print(res1) # {"username":"jason","pwd":123} 算json格式

json模块具体操作

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

d = {'username':'jason','pwd':123}
res = json.dumps(d)
print(res, type(res)) # json格式字符串

'''假设将该字符串基于网络发给了另外一个python程序'''
# 先将bytes类型转换成字符串

2. json.loads() 反序列化
将json格式字符串转换成对应的数据类型

encode_str = res.encode('utf8')
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'>

# 如果不能理解跨语言传输的作用 那么权且理解下面的操作即可
d = {'username': 'jason', '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()
将文件数据直接转成对应的数据类型(自动反序列化)
"""

# 强调:不是所有的数据类型都支持序列化
"""
+-------------------+---------------+
| 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软件的功能
"""

os、sys、json、subprocess模块的更多相关文章

  1. 模块random+os+sys+json+subprocess

    模块random+os+sys+json+subprocess 1. random 模块   (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...

  2. os、json、sys、subprocess模块

    os模块 import os 1.创建目录(文件夹) os.mkdir(r'a') # 相对路径 只能创建单级目录 os.makedirs(r'a\b') # 可以创建单级和多及目录 2.删除目录 o ...

  3. 7.18 collection time random os sys 序列化 subprocess 等模块

    collection模块 namedtuple 具名元组(重要) 应用场景1 # 具名元组 # 想表示坐标点x为1 y为2 z为5的坐标 from collections import namedtu ...

  4. python之os与json&pickle模块

     一.os模块 简单概述一下os模块就是与操作系统交互的一个接口 import os #os.getcwd() print(os.getcwd()) # 获取到当前工作目录 # 运行结果:E:\pyt ...

  5. 学到了林海峰,武沛齐讲的Day22-完 os sys json pickle shelve XML re

    __ file__    =====   文件路径 os.path.dirname( 路径 )=======到上一层目录 os sys

  6. python之常见模块(time,datetime,random,os,sys,json,pickle)

    目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...

  7. python基础四(json\os\sys\random\string模块、文件、函数)

    一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+')  #必须用a ...

  8. Day 17 time,datetime,random,os,sys,json,pickle

    time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...

  9. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

  10. oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections

    今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...

随机推荐

  1. emu8086实现两位数乘法运算

    题目说明:从键盘上输入任意两个不大于2位数的正实数,计算其乘积,结果在屏幕上显示 一.准备材料 DOS功能调用表:https://blog.csdn.net/mybelief321/article/d ...

  2. [C++] C++socket套接字网络通讯实例

    //服务器端:#include "winsock2.h"  #include <string>#pragma comment(lib, "ws2_32.lib ...

  3. [SPDK/NVMe存储技术分析]012 - 用户态ibv_post_send()源码分析

    OFA定义了一组标准的Verbs,并提供了一个标准库libibvers.在用户态实现NVMe over RDMA的Host(i.e. Initiator)和Target, 少不了要跟OFA定义的Ver ...

  4. DDOS防御----CENTOS 内核TCP参数优化

    0x01 环境 attact作为攻击发起方,安装有hping server作为被攻击方,修改内核TCP参数.使用操作系统CENTOS7 0x02 步骤 一.发起攻击 修改TCP最大SYN连接数 使用a ...

  5. phpstudy、Apache安装DVWA教程

    1.下载DVWA(http://www.dvwa.co.uk/) 2.解压缩DVWA安装包到服务器的目录下 Apache: \Apache24\htdocs phpStudy: \PHPTutoria ...

  6. Mod_Security 安装配置

    Mod_Security 安装配置 OS平台:Ubuntu 16 服务器:Apache2 一.更新Ubuntu apt-get更新源 sudo mv /etc/apt/sources.list /et ...

  7. Pyinstaller打包Pytorch框架所遇到的问题

    目录 前言 基本流程 一.安装Pyinstaller 和 测试Hello World 二.打包整个项目,在本机上调试生成exe 三.在新电脑上测试 参考资料 前言   第一次尝试用Pyinstalle ...

  8. my file server1

    环境配置 先导入虚拟机 设置网路为NAT,扫描iP netdiscover -r 192.168.164.0/24 靶机ip:192.168.164.183 kali:192.168.164.137 ...

  9. AVRmega16 LED 例程

                                                                                      AVRmega16 LED 例程   ...

  10. git 的使用(新手)

    git的使用心得 windows版本下载git地址 git config --global user.name 用户名 在使用git前要注册用户名(个人称谓) git config --global ...