os模块

创建目录(文件夹)

os模块主要与代码运行所在的操作系统打交道
import os
os.mkdif(r'd1') # 相对路径 在执行文件所在的路径下创建目录 可以创建单级目录
os.mkdir(r'd2\d22\d222')
# 不可以创建多级目录
os.makedirs(r'd2\d22\d222')
# 可以创建多级目录
os.makedirs(r'd3')
# 也可以创建单级目录

删除目录(文件夹)

import os
os.rmdir(r'd1')
# 可以删除单级目录
os.rmdir(r'd1\d22\d222')
# 不可以一次性删除多级目录
os.removedirs(r'd1\d22')
# 可以删除多级目录
os.removedirs(r'd2\d22\d222\d2222')
# 只能删除空的多级目录
os.rmdir(r'd3')
# 只能删空的单级目录

列举指定路径下内容名称

import os
print(os.listdir())
print(os.listdir(r'D:\\'))

删除/重命名文件

os.rename(r'a.txt',r'aaa,txt')
# 旧名称 新名称
os.remove(r'aaa.txt') # 删除文件

获取/切换当前工作目录

print(os.getcwd())
# pythonProject
os.chdir('..')
# 切换到上一级目录
print(os.getcwd())
os.mkdir(r'hei')
'如果不在一个目录中要操作创建或者删除 就要先返回'

动态获取项目根路径(重要)

print(os.path.abspath(__file__))
# 获取执行文件的绝对路径
print(os.path.dirname(__file__))
# 获取执行文件所在的目录路径

判断路径是否存在(文件、目录)

print(os.path.exists(r'文件名'.py))
# 判断文件路径是否存在 True/False
print(os.path.exists(r'D:\pythonProject03\day19') # 判断路径是否存在
print(os.path.isfile(r'文件名.py'))
# 判断路径是否是文件 True
print(os.path.isfile(r'D:\pythonProject03\day19')) # 判断路径是否是文件 False print(os.path.isdir(r'01 os模块.py'))
# 判断是否是路径 False
print(os.path.isdir(r'D:\pythonProject03\day19')) # True

路径拼接(重要)

s1 = r'D:\pythonProject03\day19'
s2 = r'01 os模块.py'
print(f'{s1}\{s2}')
"""
涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样 """
print(os.path.join(s1, s2))

获取文件大小

os.path.getsize()  # 单位是字节

sys模块

import sys
print(sys.path)
print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000) # 修改python解释器默认最大递归深度
print(sys.version) # 3.8.6
# 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
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格式数据的作用

json格式数据的作用
字符串类型并且引用都是双引号 json相关操作
针对操作
json.dumps()
json.loads() 针对文件
json.dump()
json.load()

json模块实战

用户登录注册功能
import os
import json # 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__) # D:/pythonProject03/day19
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db') # D:/pythonProject03/day19/db
# 3.创建db目录
if not os.path.isdir(db_dir):
os.mkdir(db_dir)
# 4.获取用户数据
# username = input('username>>>:').strip()
# password = input('password>>>:').strip()
# 4.1.判断用户名是否已存在
# print(os.listdir(db_dir)) # ['jason.json', 'kevin.json', 'tony.json'] 方式1
# user_file_path = os.path.join(db_dir, f'{username}.json') 方式2
# 5.构造用户字典
# user_dict = {
# 'username': username,
# 'password': password,
# 'account': 15000, # 账户余额
# 'shop_car': [] # 购物车
# }
# 6.拼接存储用户数据的文件路径
# user_file_path = os.path.join(db_dir, f'{username}.json') # D:/pythonProject03/day19/db/jason.json
# 7.写入文件数据
# with open(user_file_path,'w',encoding='utf8') as f:
# json.dump(user_dict, f)
username = input('username>>>:').strip()
# 1.拼接上述用户名组成的文件路径
target_user_file_path = os.path.join(db_dir, f'{username}.json')
if not os.path.isfile(target_user_file_path):
print('你赶紧滚蛋 用户名都不对 搞什么飞机')
else:
password = input('password>>>:').strip()
# 2.获取用户真实数据字典
with open(target_user_file_path,'r',encoding='utf8') as f:
real_user_dict = json.load(f)
if password == real_user_dict.get('password'):
print('登录成功')
else:
print('密码错误')

作业

1.编写一个统计指定文件类型的脚本工具
输入指定类型的文件后缀
eg:.txt
并给出一个具体路径 之后统计该类型文件在该文件下的个数 import os
file_type = input('请输入要查找的文件类型').strip()
name_dir = input('请输入要查找的文件夹').strip()
res = os.listdir(name_dir)
#查询该文件夹下面的所有文件名
count_num = 0
for i in res:
if i.endswith(file_type):
# 判断每个文件名 后缀是否和要抄着的文件类型相同
count_num += 1
print(count_num)
2.针对json实操 尝试单文件多用户(一行一个)是否可实现>>>:哪个更方便
不要求完成 单纯体会两种思路的难易
import os
import json
base_dir = os.path.dirname(__file__)
db_dir = os.path.join(base_dir,'db')
userinfo = os.path.join(db_dir,'userinfo.json')
while True:
if not os.path.isdir(db_dir):
os.mkdir(db_dir) username = input('请输入用户名')
password = input('请输入密码')
user_dict = {'name':username,'psd':password}
with open(userinfo,'a',encoding='utf8') as f:
json.dump(f'{user_dict}\n',f)
print('添加成功')

最新文章

  1. InstallShield打包设置相对路径
  2. Linux System Calls Hooking Method Summary
  3. HDU4067 Random Maze(最小费用最大流)
  4. js中json字符串转成js对象
  5. Linux 命令 - w: 显示登录的用户及其当前执行的任务
  6. think完全还原原形的 SQL
  7. 【leetcode】Merge k Sorted Lists(按大小顺序连接k个链表)
  8. C# post请求 HttpWebRequest
  9. 部署nginx+rsyslog补丁
  10. POJ1201 差分约束
  11. 单独谈谈 Android Cursor 的使用细节
  12. Android多线程下安全访问数据库
  13. iOS开发--XMPPFramework--环境的配置(一)
  14. 使用 .NET Core 开发 BT Tracker 服务器
  15. 在.NET中使用Redis
  16. Arch Linux安装后的一些初始设置简介
  17. tensorflow 添加一个全连接层
  18. 看起来像是PS的照片,实际上却令人难以置信!
  19. HDU1518 Square 【剪枝】
  20. go 算法

热门文章

  1. Job And Schedule (V8R6C3)
  2. HDFS 高可用分布式环境搭建
  3. 读完 RocketMQ 源码,我学会了如何优雅的创建线程
  4. Java SE 3、封装
  5. 彻底掌握Makefile(二)
  6. Beats:使用 Filebeat 导入 JSON 格式的日志文件
  7. NSIS 去除字串中的汉字
  8. Node.js(七)MySql+ajax
  9. SQL Server复制的阶梯
  10. Codeforces Round #710 (Div. 3)