进入python的世界_day19_python基础——os模块、sys模块、json模块
一、os模块
一、常用os代码
| 代码 | 功能 |
|---|---|
| os.mkdir() | 生成单级目录 |
| os.makedirs() | 可生成多层递归目录 |
| os.rmdir() | 删除单级空目录 |
| os.removedirs() | 递推删除空目录,遇到非空目录停下 |
| os.listdir() | 把指定目录下的所有文件和子目录还有隐藏的文件都打印出来,以列表形式返回 |
| os.remove() | 删除一个文件 |
| os.rename() | ("oldname","newname" ) 重命名文件/目录 |
| os.getcwd() | 获取当前工作目录 |
| os.chdir() | 改变当前脚本工作目录 |
| os.path.abspath() | 返回path规范化的绝对路径,比如双下file获取执行文件的绝对路径,带文件自己 |
| os.path.dirname()重要 | 获取执行文件所在的sys.path,不带文件自己,无论谁电脑启动,都动态取,可套娃来获取上层 |
| os.path.exists/isdir() | 判断路径是否存在,返回布尔值 |
| os.path.isfile() | 判断文件是否存在,返回布尔值 |
| os.path.join(path1[, path2[, ...]]) | 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 |
| os.path.getsize() | 获取文件大小(字节为单位) |
补充:
| os.path.splitext(path) | 将路径的文件名和后缀名分割 |
|---|---|
| os.curdir | 返回当前目录: ('.') |
二、sys模块
| 代码 | 功能 |
|---|---|
| sys.path | 获取执行文件的已经添加到系统的环境变量路径 |
| sys.version | 获取python解释程序的版本信息 |
| sys.argv() | 在用cmd命令执行代码文件时,括号第一个元素是代码文件本身路径,后面的元素都是参数,组成一个参数列表,可以未来让Py文件变成命令行执行时,对传参做出限制 |

三、json模块——很重要
1.概念
因为我们以后不可能单单用python这一门语言写,还有可能用jave c++等写,那么不同的语言语法不互通怎么办?
json模块有点类似翻译官,而且是懂很多很多语言的翻译官,给两个不同的编程软件做翻译
2.序列化
翻译的过程就叫做序列化,把内存的数据类型转为一个特定的格式的内容,然后传输给其他平台使用
比如转为json格式的内容
3.反序列化
也很好理解,类似编码和解码,反序列化就是把json格式的内容转成内存中的数据类型
4.特点
所有json数据,都是用" "符号
5.如何序列化与反序列化
格式:所有数据类型
json.dumps() json.loads()
针对文件类型
jason.dump() json.load()
import json
t = 'hello'
print(t, type(t))
t = json.dumps(t) # 序列化
print(t, type(t))
>>>
hello <class 'str'>
"hello" <class 'str'>
_______________________________________
import json
t = ['hello', 'wordl']
print(t, type(t))
t = json.dumps(t) # 序列化
print(t, type(t))
>>>
['hello', 'wordl'] <class 'list'>
["hello", "wordl"] <class 'str'>
————————————————————————————————————————
l = json.loads(t)
print(l,type(l)) # 反序列化
>>>
['hello', 'wordl'] <class 'list'>
# 将序列化的结果接入文件的简单方法,要熟练!!!
import json
with open('test.json', 'w', encoding='utf8') as f:
json.dump(['hello', 'world'],f)

# 同理,读取文件内json格式的字符串后反序列化
import json
with open('test.json', 'r', encoding='utf8') as f:
json_res = f.read()
a = json.loads(json_res)
print(a, type(a))
>>>
['hello', 'world'] <class 'list'>
作业
1.编写一个统计指定文件类型的脚本工具
输入指定类型的文件后缀
eg:.txt
并给出一个具体路径 之后统计该类型文件在该文件下的个数
ps:简单实现即可 无需优化
def func():
import os
check_name = input('请输入您要查询的文件类型>>>:')
check_path = input('请输入您要查询的路径>>>:')
t = os.listdir(f'{check_path}')
list = []
for i in t:
filename, leixing = os.path.splitext(i)
list.append(leixing)
count = list.count(f'{check_name}')
print(f'您要查询的{check_name}类型文件在{check_path}中的个数为{count}')
func()
2.针对json实操 尝试单文件多用户(一行一个)是否可实现>>>:哪个更方便
不要求完成 单纯体会两种思路的难易
3.编程小练习
有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
import os
db_path = os.path.dirname(__file__)
file_db = os.listdir(db_path)
for file in file_db:
print(file)
while True:
choice_file = input('请选择要浏览的文件夹>>>:').strip()
choice_file_path = os.path.join(os.path.dirname(__file__), f'{choice_file}')
list_choice = os.listdir(choice_file_path)
if not list_choice:
print('目标文件夹为空哦')
continue
print(f'******该文件夹{choice_file}所含文件******')
for i in list_choice:
print(i)
print('***************************************')
break
while True:
file_path = input('请选择您要打开的文件>>>:')
real_file_path = os.path.join(choice_file, file_path)
if file_path in list_choice:
with open(r'%s' % real_file_path, 'rt', encoding='utf8') as f:
print(f.read())
else:
print('没有找到您要打开的文件啦')

浙公网安备 33010602011771号