os、sys、json、subprocess模块
今日内容概要
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模块的更多相关文章
- 模块random+os+sys+json+subprocess
模块random+os+sys+json+subprocess 1. random 模块 (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...
- os、json、sys、subprocess模块
os模块 import os 1.创建目录(文件夹) os.mkdir(r'a') # 相对路径 只能创建单级目录 os.makedirs(r'a\b') # 可以创建单级和多及目录 2.删除目录 o ...
- 7.18 collection time random os sys 序列化 subprocess 等模块
collection模块 namedtuple 具名元组(重要) 应用场景1 # 具名元组 # 想表示坐标点x为1 y为2 z为5的坐标 from collections import namedtu ...
- python之os与json&pickle模块
一.os模块 简单概述一下os模块就是与操作系统交互的一个接口 import os #os.getcwd() print(os.getcwd()) # 获取到当前工作目录 # 运行结果:E:\pyt ...
- 学到了林海峰,武沛齐讲的Day22-完 os sys json pickle shelve XML re
__ file__ ===== 文件路径 os.path.dirname( 路径 )=======到上一层目录 os sys
- python之常见模块(time,datetime,random,os,sys,json,pickle)
目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...
- python基础四(json\os\sys\random\string模块、文件、函数)
一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+') #必须用a ...
- Day 17 time,datetime,random,os,sys,json,pickle
time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...
- Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块
Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函 ...
- oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections
今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...
随机推荐
- ArcMap操作随记(6)
1.上流汇流区 [填洼]→[流向]→[分水岭] 2.输入坐标进行移动,也就是精确移动 [移动]工具(在自定义中,其中的[旋转]工具也有类似效果) 3.找最近的要素(矢量) [近邻分析]→[汇总] 4. ...
- 火狐firebug&firepath插件安装
火狐浏览器下掉了firebug和firepath插件,用户即使下载了火狐55以下的版本,也无法查找到这两个插件,以下方法可以解决哦 第1步:下载火狐55以内版本安装包,安装时迅速设置禁止自动更新版本, ...
- Linux 显示文件大小的命令
ll显示的是字节,可以使用-h参数来提高文件大小的可读性,另外ll不是命令,是ls -l的别名ls -al 是以字节单位显示文件或者文件夹大小: 字节b,千字节kb, 1G=1024M=1024*10 ...
- 女朋友汇总表格弄了大半天,我实在看不下去了,用40行代码解决问题 | Python使用openpyxl库读写表格Excel(xlsx)
1.openpyxl基本操作 python程序从excel文件中读数据基本遵循以下步骤: 1.import openpyxl 2.调用openpyxl模块下的load_workbook('你的文件名. ...
- 知识点简单总结——minmax容斥
知识点简单总结--minmax容斥 minmax容斥 好像也有个叫法叫最值反演? 就是这样的一个柿子: \[max(S) = \sum\limits_{ T \subseteq S } min(T) ...
- 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理
目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...
- java 基础知识(三)
Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料 162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...
- 使用postman进行post请求传递中文导致后台接收乱码的问题
1.个人猜测估计是如果header里不指明编码的话,经过tomcat服务器时会导致转换乱码信息,这样就算你在filter里配置了EncodingFilter相关的过滤器也无济于事.. 解决方法就是在h ...
- REST 和RPC对比?
1.RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突. 2.REST是轻量级的接口,服务的提供和调用不存在代码之间 ...
- js技术之拖动table标签
一.js技术之拖动table标签 起因:前几天公司,突然安排一个任务 任务描述:要求尺码table列表要像Excel表中一样可以直接移动整行尺码到任意行位置 技术点:采用ui的sortable技术来h ...
