Python模块上
python模块
-
os和sys模块
-
json模块
-
os和sys模块
- os模块主要是针对目前执行文件对操作系统的操作
- sys模块主要是正对python解释器操作
- os模块的用法
1. 创建目录
os.mkdir(r'd1') # 当前目录下创建d1,不可以创建多级目录
os.makedirs(r'a1/b1/c1/d1') # 当前目录下创建多级目录,也可以创建单级目录
2. 删除目录
os.rmdir(r'd1') # 可以删除单级目录,如果有文件不可以删除,并且不可以删除多级目录
os.removedirs(r'a1/b1/c1/d1') # 可以删除多成目录,只能删除空目录
3. 列举文件路径下内容名称
print(os.listdir(r'modular')) # 列出当前目录下的所有文件
4. 删除重命名文件
os.rename(r'test', 'test.py') # 重命名test文件
os.remove(r'test.py') # 删除test.py 文件
5. 获取/切换当前工作目录
print(os.getcwd()) # 获取当前工作目录
os.chdir('..') # 切换工作目录
6. 动态获取项目根目录
print(os.path.abspath(__file__)) # 获取执行文件的绝对路径
print(os.path.dirname(__file__)) # 获取执行文件所在目录路径
7. 判断路径是否存在(文件/目录)
print(os.path.exists(r'osandsys.py')) # 判断文件是否存在
print(os.path.exists(r'/Users/wesley/PycharmProjects/python-1')) # 判断路径是否存在
print(os.path.isfile('osandsys.py')) # 判断路径是否文件 True
print(os.path.isfile('/Users/wesley/PycharmProjects/python-1')) # 判断路径是否文件 False
print(os.path.isdir('osandsys.py')) # 判断是否为路径 False
print(os.path.isdir(r'/Users/wesley/PycharmProjects/python-1')) # 判断是否路径 True
8. 路径拼接
s1 = '/root/home/python'
s2 = 'start.py'
print(os.path.join(s1, s2)) # 使用join拼接
/root/home/python/start.py
9. 获取文件大小
print(os.path.getsize(r'osandsys.py')) # 获取的大小是字节
- sys模块的用法
print(sys.path) # 获取pycharm的环境变量
print(sys.getrecursionlimit()) # 获取最大递归深度
sys.setrecursionlimit(5000) # 修改递归深度
print(sys.version) # 获取python解释器的版本信息
print(sys.platform) # 获取当前系统架构
# argv 主要用于命令行,在执行过程中可以让用户传入必须参数作为判断
res = sys.argv
if len(res) != 3:
print('执行命令缺少了用户名或密码')
else:
username = res[1]
password = res[2]
if username == 'jason' and password == '123':
print('jason您好 文件正常执行')
else:
print('您不是jason无权执行该文件')
- json模块
序列化模块,序列化可以让其他的编程语言识别 json 格式数据
- 需要注意,json和python的字典并无太大区别,唯一需要注意的是,使用的是双引号
1. 针对数据操作 dumps,loads
2. 针对文件操作 dump, load
1. dumps 是将python中的字典数据序列化为json数据
2. loads 是将json数据反序列化为python中的字典数据
3. dump 是配合文件使用,在序列化过后直接写入文件
4. load 配合文件使用,直接读取序列化之后的python类型
d1 = {'name': 'wesley', 'age': 18}
print(d1)
print(type(d1))
d2 = json.dumps(d1)
print(d2)
print(type(d2))
d3 = json.loads(d2)
print(type(d3))
{'name': 'wesley', 'age': 18}
<class 'dict'>
{"name": "wesley", "age": 18}
<class 'str'>
<class 'dict'>
- 联系题
# 1.编写一个统计指定文件类型的脚本工具
# 输入指定类型的文件后缀
# eg:.txt
# 并给出一个具体路径 之后统计该类型文件在该文件下的个数
# ps:简单实现即可 无需优化
import os, json
def file_type_find():
while True:
# 输入需要查询的路径
user_path = input('请输入需要查询的文件路径: ').strip()
# 判断路径是否存在
if not os.path.exists(user_path):
print('路径不存在,请从新输入: ')
continue
# 输入查看的文件类型
look = input('请输入需要查看的文件类型: ').strip()
# 查看用户输入的路径文件
look_file_type = os.listdir(rf'{user_path}')
count = 0
# 过滤文件结尾
for i in look_file_type:
if i.endswith(look):
count += 1
print(os.path.join(user_path, i))
print(f'此类型文件为{count}个')
break
file_type_find()
2. 编程小练习
有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
import os, json, sys
# 进入db文件夹
find_dirdb = os.listdir()
if 'db' in find_dirdb:
# 切换目录
os.chdir('db')
# 获取目录下的文件
file_list = os.listdir()
# 获取路径
db_path = os.getcwd()
while True:
print(file_list)
choice = input('请选择需要查看的文件(请输入文件完整的名字):')
abs_path = os.path.join(db_path, choice)
with open(rf'{abs_path}', 'r', encoding='utf8') as f:
print(f.read())

浙公网安备 33010602011771号