python学习笔记

今日内容概要

  • 时间模块之datetime模块
  • os模块
  • sys模块
  • json模块
  • json模块的实操

今日内容详细

注意:py文件名称尽量不要与模块名冲突(内置,第三方)

datetime模块

  • 与time模块相似,都是与时间操作相关的模块
功能说明
datetime.data 日期对象,常用的属性有year,month,day
datetime.time 时间对象,常用的属性有hour, minute, second
datetime.datetime 日期时间对象,常用的属性有year,month,day,hour, minute, second
datetime.timedelta 表示时间间隔,即两个时间点的间隔,主要用于做时间加减的
import datetime


1.date
res = datetime.date.today()
print(res)  # 2022-07-15

2.time
res1 = datetime.time(15, 18, 35)
print(res1) # 15:18:35

3.datetime
res2 = datetime.datetime.today()
print(res2) # 2022-07-15 15:20:12.535612

4.timedelta
tl = datetime.timedelta(days=3)
print(res + tl)  # 2022-07-18
print(res - tl)  # 2022-07-12
"""
timedelta括号内有很多参数 没有的时间可以通过换算得来
"""

补充知识:

print(datetime.datetime.now()) # 2022-07-15 15:25:11.200701

print(datetime.datetime.utcnow()) # 2022-07-15 07:25:11.200701

c = datetime.datetime(2022, 7, 15, 15, 25)
print('指定日期:', c) # 指定日期: 2022-07-15 15:25:00

os模块

  • os模块主要是跟当前程序所在的操作系统打交道
功能说明
os.mkdir('dirname') 生成单级目录
os.makedirs('dirname1/dirname2') 生成多级目录,也可生成单级目录
os.rmdir('dirname') 可以删除单级目录,但是目录下不能有其他数据,也不支持多级目录删除
os.removedirs('dirname') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.rename("oldname","newname") 重命名文件目录
os.remove() 删除一个文件
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录
os.path.dirname(__ file__) 获取当前文件所在的目录路径
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True, 否则返回False
os.path.isfile(path) 如果path是一个存在的文件,返回True, 否则返回False
os.path.join() 拼接路径
os.path.getsize() 获取文件大小(bytes)
import os
relative_path = 'a.txt'
'''拼接a.txt的绝对路径'''
absolute_path = r'D:\pythonProject\day24\ccc\ddd\eee'
print(absolute_path + relative_path)
"""涉及到路径拼接 不要使用加号 建议使用os模块的里面join方法"""
res = os.path.join(absolute_path, relative_path)
print(res)
# ps:join方法可以自动识别当前所在的操作系统并自动切换正确的分隔符  windows用\   mac用/
  • 输出结果:

image

import os


#1.创建目录
os.mkdir(r'aaa')  # 创建单级目录
os.mkdir(r'bbb\ccc\ddd')  # mkdir无法创建多级目录
os.makedirs(r'bbb\ccc\ddd')  # makedirs可以创建多级目录
os.makedirs(r'ccc')  # makedirs也可以创建单级目录
#2.删除目录
os.rmdir(r'aaa')  # 可以删除单级目录
os.rmdir(r'ccc')  # 但是单级目录下不能有其他数据 也不支持多级目录的删除
os.removedirs(r'ccc')  # 针对有数据的目录也无法删除
os.removedirs(r'bbb\ccc\ddd')  # 由内而外递归删除空目录 直到有数据的目录为止
#3.列举指定路径下的文件名称(文件、目录)
print(os.listdir())  # 结果是列表  ['.idea', '01 datetime模块.py', '02 os模块.py', 'ccc']
print(os.listdir(r'D:\\'))
#4.重命名文件 删除文件
os.rename(r'a.txt', r'aaa.txt')
os.remove(r'aaa.txt')
#5.获取当前工作路径(所在的路径)  绝对路径
print(os.getcwd())  # D:\pythonProject\day24
os.chdir(r'..')
os.mkdir(r'heiheihei')
print(os.getcwd())
#6.与程序启动文件相关
print(os.path.abspath(__file__))  # 获取当前文件的绝对路径(可以不记)
print(os.path.dirname(__file__))  # 获取当前文件所在的目录路径(必须得记)
#7.判断路径是否存在(文件、目录)
print(os.path.exists(r'ATM'))  # True
print(os.path.exists(r'aaa'))  # False
print(os.path.exists(r'01 datetime模块.py'))  # True
print(os.path.exists(r'a.txt'))  # False
print(os.path.isdir())  # isdir只用于路径是否是目录(文件夹)
print(os.path.isdir(r'ccc'))  # True
print(os.path.isdir(r'01 datetime模块.py'))  # False
print(os.path.isfile())  # isfile只用于路径是否是文件
print(os.path.isfile(r'ccc'))  # False
print(os.path.isfile(r'01 datetime模块.py'))  # True
# 8.获取文件大小  bytes
print(os.path.getsize(r'02 os模块.py'))  # 2363
print(os.path.getsize(r'a.txt'))  # 17

sys模块

  • sys模块主要是跟python解释器打交道
功能名称
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.path 返回模块的搜索路径, 结果是列表
sys.version 获取Python解释程序的版本信息
sys.platform 返回操作系统平台名称
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
import sys

print(sys.path)
print(sys.version)
print(sys.platform)
print(sys.argv)
  • 输出结果:

image

  • sys.argv实操
'''需求:命令执行当前文件必须要提供用户名和密码,否则不准执行'''

import sys
res = sys.argv
if len(res) == 3:
    username = res[1]
    password = res[2]
    if username == 'jason' and password == '123':
        print('可以执行')
    elseprint('用户名或密码错误')
else:
    print('请填写用户名和密码')
  • 需要用cmd执行查看结果:

image

json模块

1.简介

json模块也称之为序列化模块

什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

2.作用

json模块是不同编程语言之间数据交互必备的模块(处理措施)

image

3.json格式的数据

数据基于网络传输肯定是二进制,那么在python中只有字符串可以调用encode方法转成二进制数据,所以json格式的数据也属于字符串

json格式的数据有一个非常明显的特征:首先肯定是字符串,其次是标志性的双引号

功能说明
json.dump() 将其他数据以json格式字符串写入文件
json.load() 将文件中json格式字符串读取出来并转换成对应的数据类型
json.dumps() 将其他数据类型转换成json格式字符串
json.loads() 将json格式字符串转化成对应的数据类型
d = {'name': 'jason', 'pwd': 123}
# 需求:将上述字典保存到文件中 并且将来读取出来之后还是字典
with open(r'b.txt', 'w', encoding='utf8') as f:
    f.write(str(d))
with open(r'b.txt', 'r', encoding='utf8') as f:
    data = f.read()
    print(data, type(data))  # {'name': 'jason', 'pwd': 123} <class 'str'>


import json
res = json.dumps(d)  # 序列化    将其他数据类型转换成json格式字符串
print(res, type(res))  # {"name": "jason", "pwd": 123} <class 'str'>
d1 = {"name": "jason", "pwd": 123}
print(d1)  # {'name': 'jason', 'pwd': 123}
res1 = json.loads(res)  # 反序列化   将json格式字符串转换成对应编程语言中的数据类型
print(res1, type(res1))  # {'name': 'jason', 'pwd': 123} <class 'dict'>


import json
with open(r'b.txt', 'w', encoding='utf8') as f:
    #f.write(json.dumps(d))
    json.dump(d, f)  # 直接让字典写入文件(json自动帮你完成转换)
with open(r'b.txt', 'r', encoding='utf8') as f:
    # data = f.read()
    # res = json.loads(data)
    # print(res, type(res))
    res = json.load(f)
    print(res, type(res))  # {'name': 'jason', 'pwd': 123} <class 'dict'>

json模块的实参

import json
import os


# 拿到用户的字典数据
base_dir = os.path.dirname(__file__)  # 2.先获取当前根目录
db_path = os.path.join(base_dir, 'db')  # 3.获取db文件夹的完整路径
username = input('username:').strip()  # 1.获取用户名
username_list = os.listdir(db_path)  # 4.列出db文件夹下面的文件
if username in username_list:  # 5.判断获取的用户名在不在db文件夹下面
    file_path = os.path.join(db_path, username)  # 6.拼接db文件夹下面的文件得的绝对路径
    with open(file_path, 'r', encoding='utf8') as f:
        data = json.load(f)  # 7.得到用户的字典数据
    print(data)


# 涉及到用户数据的存储 可以单用户单文件
# 4.创建一个存储数据的文件夹首先判断它存不存在当前根目录下
base_dir = os.path.dirname(__file__)  # 5.先获取当前根目录
db_path = os.path.join(base_dir, 'db') #6.获取存储数据文件夹的完整路径
if not os.path.exists(db_path):  #7.判断它存不存在当前根目录下
    os.mkdir(db_path)  #8.创建储数据文件夹
username = input('username:').strip()
password = input('password:').strip()  # 1.获取用户名密码
user_dict = {'username': username,
             'password': password,
             'balance': 15000,
             'shop_car': []
             }             # 2.创建用户数据字典
file_path = os.path.join(db_path, '%s'%username)  #9.拼接一个真正的路径
with open(file_path, 'w', encoding='utf8') as f:
    json.dump(user_dict, f)       # 3.将用户数据写入一个单独的文件

补充知识:

下面的校验也可以使用异常捕获实现

'''需求 命令行执行当前文件必须要提供用户名和密码 否则不准执行'''
import sys


try:
    res = sys.argv
    username = res[1]
    password = res[2]
except Exception as e:
    print('请填写用户名和密码')
else:
    if username == 'jason' and password == '123':
        print('可以执行')
    else:
        print('用户名或密码错误')

image

posted @   空白o  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示