python各种模块(2)

python各种模块(2)

os模块

os模块的简介

#什么是os模块
os模块提供了多数操作系统的功能接口函数
当os模块被导入后 它会自适应于不同的操作系统平台 根据不同的平台进行相应的操作
在python编程时,经常和文件、目录打交道
os.name 主要作用是判断目前正在使用的平台,并给出操作系统的名字
os.getcwd() 获取当前工作的目录
os.listdir(path) 列出path目录下所有的文件和目录名
os.remove(path) 删除path指定的文件
os.rmdir(path) 删除path指定的目录
os.mkdir(path) 创建path指定的目录
os.path.isfile(path) 判断指定对象是否为文件
os.path.isdir(path) 判断指定对象是否为目录
os.path.exists(path) 检验指定的对象是否存在
os.path.split(path) 返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体
os.system(cmd) 执行shell命令。返回值是脚本的退出状态码,0代表成功,1代表不成功
os.chdir(path) 'change dir'改变目录到指定目录
os.path.getsize() 获得文件的大小,如果为目录,返回0
os.path.abspath() 获得绝对路径
os.path.join(path, name) 连接目录和文件名,与os.path.split(path)相对
.os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路径
#代码示例:
1.创建目录里
import os
os.mkdir(r'bbb')	# 使用相对路径 在当前执行文件所在的路径下创建一个aaa文件夹	
'mkdir只能创建单级目录'

os.makedirs(r'ccc/ddd')	# makedirs支持创建多级目录

2.删除目录
os.rmdir(r'bbb')	# 只能删空的单级目录

os.removedirs(r'E:\PyCharm2021.2.3\jbr\bin\E\PycharmProjects\pythonProject2\ccc\ddd')	
# 删除目录之后如果外层的目录也是空的则继续删除

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

print(os.listdir())		# 查看执行文件下的目录

print(os.listdir(r'E:\Python36'))	# 查看指定目录

4.删除文件、重命名文件

os.remove(r'a.txt')		# 删除文件

os.rename('weekday2','week2.py')	#重命名该文件

5.获取当前路径、切换路径

print(os.getcwd())	#	获取当前路径

os.chdir(r'E:\python36')	# 改变当前工作目录到指定的路径

6.软件开发目录规范 启动脚本兼容性操作

os.path.dirname(__file__)	 # 动态获取当前执行文件所在的绝对路径

os.path.dirname(os.path.dirname(__file__))  # 每嵌套一层就是往上切换一层

print(os.path.abspath(__file__))  # 动态获取当前执行文件自身的路径

7.判断文件是否存在

print(os.path.exists(r'a.txt'))  # True  判断所给的路径是否存在

print(os.path.exists(r'week2.py'))  # True  判断所给的路径是否存在

print(os.path.isfile(r'aaa'))  # False  判断路径是否是一个文件

print(os.path.isfile(r'week2.py'))  # True  判断路径是否是一个文件

8.拼接路径

res = os.path.join(base_dir, exe_dir)  # 能够自动识别当前操作系统的分隔符

9.获取文件大小(字节  bytes)

print(os.path.getsize(r'week2.py'))  # 2231bytes

print(os.path.getsize(r'a.txt'))  # 14bytes

小练习

# 选择指定文件并打开浏览(目前只考虑文本文件即可)

# 展示某个文件下所有的文件名称 用户选择哪个就打开哪个
import os

# 1.先获取目标文件路径(动态获取 也可以省事先写死)
target_path = os.path.dirname(__file__)
full_path = os.path.join(target_path, '好看的合集')
# 2.列举该路径下所有的文件名称
file_name_list = os.listdir(full_path)  # ['','','','']
while True:
    # 3.循环展示每个文件名称
    for i, j in enumerate(file_name_list, start=1):
        print(i, j)
    # 4.获取用户选择的编号
    target_num = input('请输入您想要查看的文件编号>>>:').strip()
    # 5.判断是否是纯数字
    if target_num.isdigit():
        # 6.如果是纯数字 转换成整型
        target_num = int(target_num)
        # 7.判断数字在不在数量范围内
        if target_num in range(1, len(file_name_list) + 1):
            # 8.获取文件名称
            file_name = file_name_list[target_num - 1]
            # 9.拼接完整路径
            full_file_path = os.path.join(full_path, file_name)
            # 10.文件操作打开文件
            with open(full_file_path, 'r', encoding='utf8') as f:
                print(f.read())
        else:
            print('没有该编号的文件')
    else:
        print('编号只能是数字')
"""
如果是其他类型的文件 那么普通的文件操作是没有正常打开并观看的
需要调用各自软件的接口 
"""

sys模块

#什么是sys模块
该模块提供对解释器使用或维护的一些变量的访问 以及与解释器强烈交互的函数 它始终可用
#代码示例:
import sys

# 1.列举当前执行文件所在的sys.path
print(sys.path)

# 2.获取解释器版本信息
print(sys.version)

# 3.获取平台信息
print(sys.platform)		# win32

# 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 == 'jason' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')
else:
    print('请输入用户名和密码 不能漏写或多写')
    
    
    try:
    username = sys.argv[1]
    password = sys.argv[2]
except Exception:
    print('请输入用户名和密码')
else:
    if username == 'jason' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')
        

json模块

#什么是jason
json是一种轻量级的数据交换格式
JSON的数据格式其实就是python里面的字典格式 里面可以包含方括号括起来的数组 也就是python里面的列表

#有专门处理json格式的模块—— json 和 picle模块

Json   模块提供了四个方法: dumps、dump、loads、load

pickle 模块也提供了四个功能:dumps、dump、loads、load

 '''json是一个序列化模块 主要用于跨语言传输数据'''   
    
1.参考下图得知json格式数据是不同变成语言之间数据交互的媒介
2.json格式数据的具体特征
	结论1中有一个小细节>>>:数据基于网络传输肯定是二进制格式
  在python中bytes类型的数据可以直接看成是二级制数据
  	python中哪些数据可以转成bytes类型(编码encode())
    	只有字符串可以!!!
        
  # 由上述推论可知 json格式数据 本质应该属于字符串类型

#代码示例:
import json

json.dumps([])    # dumps可以格式化所有的基本数据类型为字符串'[]'

json.dumps(1)    # 数字 '1'

json.dumps('1')   # 字符串'"1"'

dict = {"name":"Tom", "age":23}

json.dumps(dict)     # 字典

a = {"name":"Tom", "age":23}
with open("test.json", "w", encoding='utf-8') as f:
    # indent 格式化保存字典,默认为None,小于0为零个空格
    f.write(json.dumps(a, indent=4))
    # json.dump(a,f,indent=4)   # 和上面的效果一样
    
"""
json.dumps()        序列化
    将python数据类型转换成json格式字符串
json.loads()        反序列化
    将json格式字符串转换成对应的数据类型
"""

python对象(obj) 与json对象的对应关系

   +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+

subprocess模块

#什么是subprocess模块
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软件的功能
"""

posted @ 2022-03-30 19:34  洛阳城门听风雨  阅读(32)  评论(0)    收藏  举报