内容概要

  • os模块
  • sys模块
  • json模块/实战

1.os模块

# os模块主要是与我们的操作系统打交道
1.创建文件夹(目录)
import os
os.mkdir(文件夹名字) # 创建当前文件目录下单极空文件夹
os.makedirs(文件夹名字/文件夹名字) # 创建当前文件目录下多级空文件夹/也可以单文件夹

2.删除文件夹
import os
os.rmdir('module1') # 删除单级空目录
os.removedirs('module2/mm1/m1') # 删除多级空目录

3.获取文件所在位置文件名称
import os
print(os.listdir()) # 获取执行文件当前目录的文件名
print(os.listdir('C:\\')) # ()可以填写具体路径查询当前目录下的所有文件

4.修改文件名与删除文件(当前文件所在路径)
import os
os.rename('bb.txt','xiaoxin.txt') # 更改当前目录下的文件名字
os.remove('bb.txt') # 删除当前目录内的指定文件

5.获取当前执行文件的目录名
import os
# 获取当前工作文件的目录名
print(os.getcwd()) # 获取当前工作文件的目录名称
os.chdir('..') # 切换到上层目录
os.chdir('..//..') # 切换到上上层目录
print(os.getcwd())

6.动态获取执行文件的路径/目录  !!
import os
# 动态获取执行文件绝对路径
print(os.path.abspath(__file__)) # D:\pythonProject\Day19\今日概要.py
print(os.path.dirname(__file__)) # D:/pythonProject/Day19

7. 判断路径内文件/目录是否存在
import os.path
#
os.makedirs('module1/mm1') # 如果文件存在就无法创建新的空文件目录
print(os.path.exists(r'xiaoxin.txt')) # 判断当前执行文件目录内文件名是否存在
print(os.path.exists('bb.txt')) # 无法判断除当前执行文件目录外其他层级的文件
print(os.path.exists('module1/mm1/bb.txt')) # 填写详细路径即可做判断

8. 判断路径内文件是否存在
import os.path print(os.path.isfile('module1/mm1/bb.txt')) 9.判断路径文件夹是否存在 print(os.path.isdir('mm1'))
10.拼接路径 !!
import os
s1 = r'D:\pythonProject\Day19'
s2 = r'今日概要.py'
print(os.path.join(s1, s2))
11.计算文件内部字符数量
import os print(os.path.getsize('module1/mm1/bb.txt'))

2.sys模块

sys模块主要是帮助我们与python解释器打交道

import sys

path
1.print(sys.path) # 返回当前Py的环境路径(当前py环境可以导入内置、第三方包与函数的所在路径) platform
2.print(sys.platform) # 获取当前系统平台(如windows、Mac、linux) version
3.print(sys.version) # 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] 获取当前 Python 的版本 modules
4.print(sys.modules) # 将Python启动时加载的模块集合起来并返回一个列表 getrecursionlimit()
5.print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度 ()可以填写参数更改最大递归深度 argv
6.
# argv 获取程序外部的参数,返回值是一个列表
res = argv
if len(res) != 3:
print('执行命令缺少了用户名或密码')
else:
username = res[1]
password = res[2]
if username == 'xiaosui' and password == '123':
print('您好 文件正常执行')
else:
print('您不是无权执行该文件') 它主要是在cmd终端中添加的功能,如果需要用终端调用这个文件,那么必须要传输参数 在文件后面 如果不传输就不可以使用这个文件

3.json模块/实战

json 是一种'字符串'数据格式
我们使用json格式数据就可以让编程语言中的数据轻松的转换到别的编程语言中
json模块的主要功能是将序列化数据从文件里读取出来或者存入文件
序列化可以打破语言限制实现不同编程语言之间数据交互
'''
json 数据的形式都是字符串类型,并且是双引号引起来的
'''
1.针对数据
dumps
d1 = {'name': 'xiaoming', 'age': 18, 'sex': 'male', 'account': 15000}
json_dict1 = json.dumps(d1)
print(json_dict1) # 转为 json 格式 loads
with open('xiaoxin.txt','r',encoding='utf8') as f:
for i in f:
print(json.loads(i), type(json.loads(i))) # {'1': {'name': 'xiaoming', 'age': 18, 'sex': 'male', 'account': 15000}} <class 'dict'> 2.针对文件
dump
d1 = {1: {'name': 'xiaoming', 'age': 18, 'sex': 'male', 'account': 15000}}
# json_dict1 = json.dumps(d1)
# print(json_dict1)
with open('xiaoxin.txt','w',encoding='utf8') as f:
json.dump(d1, f)
可以直接把d1字典类型转为json格式并直接写入文件中 load
with open('xiaoxin.txt','r',encoding='utf8') as f:
data = json.load(f)
print(data,type(data))
# {'1': {'name': 'xiaoming', 'age': 18, 'sex': 'male', 'account': 15000}} <class 'dict'>
def register():
import os
import json
# 存储用户数据建立信息存放库
start_file = os.path.dirname(__file__) # 获取当前执行文件目录名
db_dir = os.path.join(start_file, 'db_info') # 拼接文件目录名和db_info文件夹
if not os.path.isdir(db_dir): # 判断执行文件目录中有没有db_info的文件夹
os.makedirs(db_dir) # 在绝对路径里面创建一个db_info文件夹
# 获取用户输入:
user_name = input('please input your username >>>>>:').strip() user_data_file = os.path.join(db_dir, f'{user_name}.json') # 拼接用户信息文件路径 if not os.path.isfile(user_data_file):
pass_word = input('please input your password >>>>>:').strip()
user_dict = { # 创建用户数据字典
'user_name': None,
'pass_word': None,
'age': None,
'account': 15000
}
user_dict['user_name'] = user_name
user_dict['pass_word'] = pass_word with open(f'{user_data_file}','w',encoding='utf8') as f:
json.dump(user_dict, f)
print(f'恭喜用户{user_name}注册成功~!')
else:
print('用户名已存在!') def login():
start_file = os.path.dirname(__file__) # 获取当前执行文件目录名
db_dir = os.path.join(start_file, 'db_info') # 拼接文件目录名和db_info文件夹
if not os.path.isdir(db_dir): # 判断执行文件目录中有没有db_info的文件夹
os.makedirs(db_dir) # 在绝对路径里面创建一个db_info文件夹
user_name = input('please input your username >>>>>:').strip()
user_data_file = os.path.join(db_dir, f'{user_name}.json')
if os.path.isfile(user_data_file):
pass_word = input('please input your password >>>>>:').strip()
with open(f'{user_data_file}','r',encoding='utf8') as f:
real_user_dict = json.load(f)
if real_user_dict['user_name'] == user_name and real_user_dict['pass_word'] == pass_word:
print(f'欢迎光临,用户{user_name}登录成功')
else:
print('用户名都错了,密码还能对了吗,小笨蛋?')

4.练习题及答案

### 作业

​```python
1.编写一个统计指定文件类型的脚本工具
输入指定类型的文件后缀
eg:.txt
并给出一个具体路径 之后统计该类型文件在该文件下的个数
ps:简单实现即可 无需优化
# solution1:
target_file_class = input('请输入您想要查询的文件后缀名').strip()
target_path = input('请输入您想要查询信息的路径>>>>>>:').strip()
data_list = os.listdir(r'{}'.format(target_path))
l2 = []
for i in data_list:
if target_file_class in i:
l2.append(i)
print('您好您需要找的数据为:',l2, '共', len(l2), r'个{}类型的文件'.format(target_file_class)) 2.针对json实操 尝试单文件多用户(一行一个)是否可实现>>>:哪个更方便
不要求完成 单纯体会两种思路的难易 实现不了 3.编程小练习
有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
import os start_file = os.path.dirname(__file__) db_dir_path = os.path.join(start_file, 'db_dir')
if not os.path.isdir(db_dir_path): # 判断执行文件目录中有没有db_dir的文件夹
os.makedirs(db_dir_path)
file_name = os.listdir(db_dir_path)
while True:
for i in file_name:
vision = i.strip('.txt')
print(vision)
choice = input('请输入您想要观看的文件名>>>>>>:')
real_file_path = os.path.join(db_dir_path, (choice + '.txt'))
if len(choice) == 7:
with open(real_file_path, 'r', encoding='utf8') as f:
for line in f:
print(line)
else:
print('请输入正确的文件名!') 4.周末大作业(尝试编写)
# 项目功能
1.用户注册
2.用户登录
3.添加购物车
4.结算购物车
# 项目说明
用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件
数据格式 {"name":"jason","pwd":123}
# ps:文件名可以直接用用户名便于校验
用户注册时给每个用户添加两个默认的键值对(账户余额 购物车)
{"balance":15000,"shop_car":{}}
添加购物车功能 商品列表可以自定义或者采用下列格式
good_list = [
['挂壁面',3]
['印度飞饼', 22]
['极品木瓜', 666],
['土耳其土豆', 999],
['伊拉克拌面', 1000],
['董卓戏张飞公仔', 2000],
['仿真玩偶', 10000]
]
用户可以反复添加商品,在购物车中记录数量
{'极品木瓜':[个数,单价]}
结算购物车
获取用户购物车中所有的商品计算总价并结算即可
针对添加购物车和结算只有登录的用户才可以执行
​```

模块/os/sys/json的更多相关文章

  1. 模块random+os+sys+json+subprocess

    模块random+os+sys+json+subprocess 1. random 模块   (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...

  2. 6 - 常用模块(os,sys,time&datetime,random,json&picle,shelve,hashlib)

    导入模块 想使用 Python 源文件,只需在另一个源文件里执行 import 语句 import module1[, module2[,... moduleN] from语句让你从模块中导入一个指定 ...

  3. python模块 os&sys&subprocess&hashlib模块

    os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...

  4. Python常用模块os & sys & shutil模块

    OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...

  5. 学到了林海峰,武沛齐讲的Day22-完 os sys json pickle shelve XML re

    __ file__    =====   文件路径 os.path.dirname( 路径 )=======到上一层目录 os sys

  6. python --- 23 模块 os sys pickle json

    一.   os模块 主要是针对操作系统的 用于文件操作 二.    sys 模块 模块的查找路径   sys.path 三.pickle 模块 1.  pickle.dumps(对象) 序列化  把对 ...

  7. 23 模块 os sys pickle json

    一.   os模块 主要是针对操作系统的 用于文件操作 二.    sys 模块 模块的查找路径   sys.path 三   pickle 模块 1.  pickle.dumps(对象) 序列化  ...

  8. python之常见模块(time,datetime,random,os,sys,json,pickle)

    目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...

  9. Day 17 time,datetime,random,os,sys,json,pickle

    time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...

  10. Python模块 - os , sys.shutil

    os 模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...

随机推荐

  1. 放弃 Electron,拥抱 WebView2!JavaScript 快速开发独立 EXE 程序

    Electron 不错,但也不是完美的. Electron 带来了很多优秀的桌面软件,但并不一定总是适合我们的需求. 多个选择总是好事! 我使用 Electron 遇到的一些麻烦 1.Electron ...

  2. docker学习笔记一-docker安装与卸载

    环境查看 # 1 查询当前centOS的版本,官方要求版本为7以上 uname -r 查询系统内核 cat /etc/os-release 系统版本 安装 # 1.卸载旧版本 yum remove d ...

  3. day39-网络编程01

    Java网络编程01 1.网络相关的概念 1.1网络通信和网络 网络通信 概念:两台设备之间通过网络实现数据传输 网络通信:将数据通过网络从一台设备传输到另一台设备 java.net包下提供了一系列的 ...

  4. 实践torch.fx第二篇-fx量化实操

    好久不见各位,哈哈,又鸽了好久. 本文紧接上一篇<实践torch.fx第一篇--基于Pytorch的模型优化量化神器>继续说,主要讲如何利用FX进行模型量化. 为什么这篇文章拖了这么久,有 ...

  5. Pod 的生命周期

    上图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要部分,接下来我们就来分别介绍影响 Pod 生命周期的部分: 首先在介绍 Pod ...

  6. 使用 Skywalking Agent,这里使用sidecar 模式挂载 agent

    文章转载自:https://bbs.huaweicloud.com/blogs/315037 方法汇总 Java 中使用 agent ,提供了以下三种方式供你选择 使用官方提供的基础镜像 将 agen ...

  7. 使用SkyWalking监控nginx (以openresty为例)

    安装使用SkyWalking先看这篇文章,地址:https://www.cnblogs.com/sanduzxcvbnm/p/15829781.html 使用SkyWalking监控nginx借助的是 ...

  8. logstash处理字段样例

  9. 原生Redis跨数据中心双向同步优化实践

    一.背景 公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度.需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥 ...

  10. 如何使用netlify部署vue应用程序

    什么是Netlify? Netlify是一个现代网站自动化系统,其JAM架构代表了现代网站的发展趋势.所谓JAM,就是指基于客户端JavaScript.可重用API和预构建Markup标记语言的三者结 ...