os模块和json模块
今日内容详细
- os模块
- sys模块
- json模块
- subprocess模块
os模块
主要用于操作系统
1. 创建文件夹 目录 也就是包 可以和目录规范配合使用
import os
# os.mkdir(r'new.file_2') # mkdir 在此目录下新建一个文件夹 无法在创建文件夹里面创键文件
#os.makedirs(r'new.file_1')
# os.makedirs(r'new.flie_1/start.py')# makedirs支持多级创建
# os.makedirs(r'new.flie_3/oss.txt')
2. 删除文件夹
# os.rmdir(r'new.file_2') # 删除单集目录
# os.rmdir(r'new.flie_1/start.py') # 也可以去指定
#os.removedirs('new.flie_1') # 单级删除没问题
# os.removedirs(r'D:\pythonProject1\new.flie_3\oss.txt') # 用绝对地址进行指定删除到
3. 查看路径途径下的文件名称
# os.listdir() # 用于检查当前文件夹格式
# print(os.listdir()) # 检查当前文件夹下文件名称
# print(os.listdir('D:/')) # 还可以用来检查其他文件下的文件名称
#os.makedirs(r'a/cdk/www.')
#os.removedirs(r'a/cdk/www.')
#os.mkdir(r'ooo')
# os.rmdir(r'ooo')
# with open('a.txt','w',encoding='utf8') as f:
# f.write('aaaa')
# os.remove(r'a.txt') 不能用于删除文件夹
# os.rename(r'a.txt', r'aaa.txt')
4. 获取当前路径、切换路径
# os.getcwd() #获取当前路径
# print(os.getcwd())
# os.chdir(r'D:/pythonProject') # 更改路径
# print(os.chdir(r'/pythonProject')) # None
5.软件开发目录规范 启动脚本兼容性操作
#print(os.path.dirname(__file__)) # 动态获取路径
#os.path.dirname(os.path.dirname(__file__)) # 路径的上一层
#abspath(__file__) # 当前文件路径的获取
#print(os.path.abspath(__file__))
7. 判断文件是否纯在
# print(os.path.exists(r'azz.py')) 判断文件是否存在在文件路径下
#os.path.isdir # 判断文件是否是一个文件夹
#print(os.path.isdir('3.28.py'))
#os.path.isfile # 判断文件是否是一个文件
#print(os.path.isfile('3.28.py'))
8.拼接路径
A = 'sos'
B = 'help'
print(A+'/'+B) # 第一种方法兼容性差
res = os.path.join(A,B) # 能够自动识别当前操作系统的分隔符
print(res)
9. 获取字节大小
print(os.path.getsize(r'12.py'))
sys模块
主要用于和python解释器打交道
import sys
1.列举当前执行文件所在的sys.path
# print(sys.path)
2. 获取当前解释器版本信息
# print(sys.version) 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
3. 获取平台信息
#print(sys.platform) win32
4. 自定义命令操作
#print(sys.argv)
json模块
json是一个序列化模块 主要用于跨语言传输数据
json格式数据的具体特征
结论1中有一个小细节>>>:数据基于网络传输肯定是二进制格式
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'>
'''双引号是json格式数据独有的标志符号'''
# d = {"username":"jason","pwd":123}
# print(d) # {'username': 'jason', 'pwd': 123} 不是
res1 = '{"username":"jason","pwd":123}'
print(res1) # {"username":"jason","pwd":123} 算json格式
具体操作
d = {'username': 'jason', 'pwd': 123}
# with open(r's.txt','w',encoding='utf8') as f:
# f.writelines(json.dumps(d))
# json.dump(d,f)
# res2 = f.write(json.dumps(d))
# print(res2,type(res2))
with open(r's.txt','r',encoding='utf8') as f:
data = f.read()
data2 = json.loads(data)
print(data2,type(data2))
json.dumps() 序列化
将python数据类型转换成json格式字符串
json.loads() 反序列化
将json格式字符串转换成对应的数据类
json.dump()将其他数据类型直接写入文件
json.load()将文件数据直接转成对应的数据类型
python只支持以下方法
+-------------------+---------------+
| 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软件的功能