datetime模块、os模块、sys模块、json模块、作业

datetime模块

1.datetime(精确至时分秒)

1.获取当前时间
	1.1 datetime.datetime.today()
    	print(datetime.datetime.today())  # 2022-07-15 14:47:04.848523
	1.2 datetime.now()
    	print(datetime.datetime.now())  # 2022-07-15 14:53:16.566713
	1.3 datetime.utcnow()
    	print(datetime.datetime.utcnow())  # 2022-07-15 06:53:53.183599
2.用指定日期时间:datetime(年,月,日,时,分,秒)
    	print(datetime.datetime(2022,7,15,14,53)) # 2022-07-15 14:53:00
3.获取的时间可以通过点的方式取出
	res3 = datetime.datetime.now()
    print(res3)  # 2022-07-15 15:12:26.418364
    print(res3.year) #2022
    print(res3.weekday())  # 4
    print(res3.isoweekday())  # 5

2.time(精确至年月日)

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

3.timedekta()

表示时间差 括号里面的参数可以填:days、seconds、microseconds、milliseconds、minutes、hours、weeks,没有的时间可以用来通过换算得来

res1 = datetime.timedelta(days=7)
res2 = datetime.datetime.now()
print(res1+res2)  # 2022-07-22 15:05:40.827497

os模块

os模块只主要是跟当前程序所在的操作系统打交道

1.创建目录

mkdir() 创建单级目录

os.mkdir(r'aaa')  # 括号里没有填写绝对路径的话,就在执行文件同层路径建立目录
os.mkdir(r'ddd\eee\fff') # 无法创建多级目录

makedirs() 创建多级目录,也可以创建单级目录

os.makedirs(r'bbb\ccc\ddd')  # 创建多级目录
os.makedirs(r'eee') # 也可以创建单级目录

2.删除目录

rmdir()删除单级目录

单级目录下不能有其他数据,也不支持多级目录的删除

os.rmdir(r'aaa') # aaa删除成功
os.rmdir('bbb\ccc\ddd') # ddd删除成功
os.rmdir(r'fff') #  fff文件下有其他数据,删除失败

removedirs()删除多级目录

有数据的目录也不能被删除,当进行多级删除时,是由内而外递归删除空目录,直到有数据的目录位置

os.removedirs(r'bbb') # 删除失败,bbb下有其他数据
os.removedirs(r'bbb\ccc\ddd') # bbb、ccc、ddd文件全被删除

3.listdir()

列举指定路径下的文件名称(文件、目录),打印出来的是列表

print(os.listdir()) # ['.idea', 'datetime模块.py', 'eee', 'fff', 'os模块.py', '练习']
print(os.listdir(r'D:\2期学习\pythonProject\20\练习'))  # ['core', 'db']

4.rename()、remove()

对文件进行重命名、删除

os.rename('a.txt','b.txt')
os.rename('c.py','e.py')

os.remove('e.py')
os.remove('b.txt')

5.getcwd()、chdir()

获取当前工作路径(绝对路径)、切换路径

print(os.getcwd()) # D:\2期学习\pythonProject\20
os.chdir(r'..')
print(os.getcwd())  # D:\2期学习\pythonProject

6.与启动文件相关

path.abspath(file)

获取当前文件的绝对路径

print(os.path.abspath(__file__)) # D:\2期学习\pythonProject\20\os模块.py

path.dirname(file)

获取当前文件所在的目录路径

print(os.path.dirname(__file__)) # D:/2期学习/pythonProject/20

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

path.exists()

用于判断文件或目录是否存在

print(os.path.exists(r'eee')) # True
print(os.path.exists(r'aaa')) # False
print(os.path.exists('os模块.py')) # True
print(os.path.exists('aaaa.py')) # False

path.isdir()

只用于判断是否是目录(文件夹)

print(os.path.isdir(r'eee')) # True
print(os.path.isdir(r'os模块.py')) # False

path.isfile()

只用于判断是否是文件

print(os.path.isfile(r'eee')) # False
print(os.path.isfile(r'os模块.py')) # True

8.path.join()

拼接路径,涉及到路径的拼接,不要使用加号,使用os模块里面的join方法,他可以识别当前所在的操作系统并自动切换正确的分隔符

base_dir = os.path.dirname(__file__)
print(base_dir) # D:/2期学习/pythonProject/20
new_file = os.path.join(base_dir,r'eee.py')
print(new_file)  # D:/2期学习/pythonProject/20\eee.py

9.path.getsize()

获取文件的大小,以字节问单位

print(os.path.getsize(r'a.txt'))  # 10

sys模块

sys模块主要是与Python解释器打交道

1.path

返回模块的搜索路径

print(sys.path) # ['D:\\2期学习\\pythonProject\\20'.....]

2.version

获取python解释器的版本信息

print(sys.version)  # 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]

3.paltform

返回操作系统平台名称

print(sys.platform)  # win32

4.sys.argv

命令行与程序进行交互

print(sys.argv) # ['D:/2期学习/pythonProject/20/sys模块.py']

res = sys.argv 
print(res)
if len(res) == 3:
    username = res[1]
    userpwd = res[2]
    if username == 'nana' and userpwd == '123':
        print("可以执行该文件")
    else:
        print('用户名密码错误')
else:
    print("请填写用户名和密码")

json模块

简介

1. json模块:也称序列化模块,它是不同程序语言之间数据交互必备的模块(类似于不同语言交流的翻译器)
2. json格式的数据应该是什么
	数据基于网络传输的形式是二进制,在python中,只有字符串才可以调用encode()转换成二进制数据,所以json格式的数据属于字符串
3. json格式的数据特征
	3.1 它是字符串类型
	3.2 引号是标志性的双引号
     	{"name": "nana", "pwd": 123}

dumps()、loads()

dumps()是将其他数据类型转换成json格式字符串

loads()是将json格式字符串转换成对应的数据类型

import json
d1 = {'name':'nana','age':18}
res1 = json.dumps(d1)
print(res1,type(res1))  # {"name": "nana", "age": 18} <class 'str'>
res2 = json.loads(res1)
print(res2,type(res2))  # {'name': 'nana', 'age': 18} <class 'dict'>

dump()、load()

将其他数据类型以json格式字符串写入文件

将文件中json格式字符串读取出来并转换成对应的数据类型

d = {'name': 'nana', 'pwd': 123}
# 需求:将上述字典保存到文件中 并且将来读取出来之后还是字典
import json
with open(r'a.txt','w',encoding='utf8')as f1:
    json.dump(d,f1)  # {"name": "nana", "pwd": 123}
with open(r'a.txt','r',encoding='utf8')as f2:
    print(json.load(f2))  # {'name': 'nana', 'pwd': 123}

练习

1.涉及到用户数据的存储 可以单用户单文件

import os
import json

base_dir = os.path.dirname(__file__)
new_base_dir = os.path.dirname(base_dir) # D:/2期学习/pythonProject/20/练习
new_dir = os.path.join(new_base_dir,'db')
print(new_dir) # D:/2期学习/pythonProject/20/练习\db
if not os.path.exists(new_dir):
    os.mkdir(new_dir)

user_name = input("请输入你的名字:").strip()
user_list = os.listdir(new_dir)
if user_name not in user_list:
    user_pwd = input("请输入你的密码").strip()
    dict_user = {'name':user_name,'pwd':user_pwd,'money':100}
    file_path = os.path.join(new_dir,'%s'%user_name)
    print(file_path)  # D:/2期学习/pythonProject/20/练习\db\ss
    with open(file_path,'w',encoding='utf8')as f1:
        json.dump(dict_user,f1)

作业

1.编写一个统计指定文件类型的脚本工具
输入指定类型的文件后缀
eg:.txt
并给出一个具体路径 之后统计该类型文件在该文件下的个数
ps:简单实现即可 无需优化

import sys
import os
res = sys.argv
base_dir = input("请输入一个绝对路径:>>>").strip()
choice_type = input("请输入指定的文件类型:>>>").strip()
list1 = os.listdir(base_dir)
count = 0
for i in list1:
    if choice_type  in i:
        count += 1
print(count)

2.针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便

import json

user_name = input("请输入你的用户名>>>:").strip()
user_pwd = input("请输入你的密码").strip()
user_dict = {'name':user_name,'pwd':user_pwd}
with open(r'a.txt','a',encoding='utf8') as f:
    res = json.dumps(user_dict)
    res1 =res +'\n'
    f.write(res1)
    print(res1,type(res1))
with open(r'a.txt','r',encoding='utf8') as f1:
    for line in f1:
        res2 =json.loads(line)
ps:单个文件和多个文件都可以实现,单个用户在一个文件中,只需要将路径获取正确,剩下的没有什么容易犯错的步骤,并且之后好判断或登陆用户信息;多个用户在一个文件中,将文件内容一行行读取出来,才能进行判断或登陆用户信息,就很繁琐

3.编程小练习
有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径

import os
while True:
    base_dir = os.path.dirname(__file__)
    # print(base_dir)  # D:/2期学习/pythonProject/20
    db_path = os.path.join(base_dir,'db')
    list1 = os.listdir(db_path)
    # print(list1) # [' B老师视频合集.txt', 'C老师视频合集.txt', 'J老师视频合集.txt', 'R老师视频合集.txt']
    dic_info ={}
    for i,j in enumerate(list1,1):
        print(i,j)
        dic_info[str(i)]=j
    # print(dic_info)
    choice = input("请输入你想看那个老师的教学视频的编号>>>:").strip()
    if choice in dic_info:
        looking_txt = dic_info[choice]
        new_file = os.path.join(db_path,looking_txt)
        with open(new_file,'r',encoding='utf8') as f1:
            print(f1.read())
    else:
        print("请重新输入")
posted @ 2022-07-15 20:53  DRAMA-娜娜  阅读(14)  评论(0)    收藏  举报