time模块
时间戳格式
import time data_time=time.time() print(data_time) #1702546257.544845 print(type(data_time)) #<class 'float'> #打印自1970年到现在的时间 1702546257.544845 #打印123,每一次停4s while True:print(123)time.sleep(4)
datetime格式(时间加减)
from datetime import datetime v1=datetime.now() print(v1) #2023-12-14 22:10:29.771616 print(type(v1)) #<class 'datetime.datetime'>
字符串格式(存入到文件)
from datetime import datetime v1=datetime.now() v1=v1.strftime("%Y-%m-%d %H:%M:%S") print(v1) print(type(v1))
练习(字符串格式)
#每注册一个用户,创建一个文件 from datetime import datetime while True:name=input("请输入用户名")passwd=input("请输入密码")#把字符戳事件变成字符串格式path_file=datetime.now().strftime("%Y-%m-%d-%H-%M-%S")path_file1="{}.txt".format(path_file) with open(path_file1,mode='a',encoding="utf-8") as f:f.write("{}|{}\n".format(name,passwd))
练习(datamate格式)
from datetime import datetime from datetime import timedelta v1=datetime.now() v2=v1+timedelta(days=199,hours=1,seconds=1,minutes=12) print(v1) #2023-12-14 22:28:49.666447 print(v2) #2024-06-30 22:40:50.666447
时间格式的相互转换
字符串--->datetime
text="2001-09-19" from datetime import datetime res=datetime.strptime(text,"%Y-%m-%d") print(res) print(type(res)) #2001-09-19 00:00:00 #<class 'datetime.datetime'>
datetime-->字符串
from datetime import datetime res=datetime.now().strftime("%Y-%m-%d") print(res) print(type(res)) #2023-12-15 #<class 'str'>
datetime-->时间戳
from datetime import datetime v1=datetime.now() #timestamp将指定时间转换为 Unix 时间戳 v2=v1.timestamp() print(v2) print(type(v2)) #1702609788.319188 #<class 'float'>
时间戳-->datetime
from datetime import datetime import time v1=time.time() res=datetime.fromtimestamp(v1) print(res) print(type(res)) #2023-12-15 11:13:18.866071 #<class 'datetime.datetime'>
考勤时间计算是否大于8小时
from datetime import datetime import time time1="2022-02-01 9:23" time2="2022-02-01 19:23" time3=datetime.strptime(time1,"%Y-%m-%d %H:%M") time4=datetime.strptime(time2,"%Y-%m-%d %H:%M") work_time=time4-time3 print(work_time) #10:00:00 时间戳格式 print(type(work_time)) #<class 'datetime.timedelta'> print(work_time.seconds/3600) #10小时 print(type(work_time.seconds/3600)) #<class 'float'>
os模块
#拼接目录 import os path=os.path.join("root","opt","aaa") print(path) #root\opt\aaa folder_path=os.path.dirname(path) #读取上一级目录 print(folder_path) #root\opt #涉及文件操作时,最好使用绝对路径 #首先使用__file__和abspath找到文件的上级目录,再通过join拼接得到完整目录,可以在任意电脑运行 import os base_dir=os.path.dirname(os.path.abspath(__file__)) file_path=os.path.join(base_dir,"mikuai") print(file_path) #D:\pycharm\pythonProject3\全栈开发\mikuai #判断文件是否存在 v1=os.path.exists("aaa.txt") print(v1) #创建文件夹 os.makedirs("xx/xx") #如果文件已经存在,会报错 #如果文件不存在,则创建文件 file_path="xx/xx" if not os.path.exists(file_path):os.makedirs("xx/xx")
判断是否为文件夹
v1=os.path.isdir(file_path) print(v1) #时文件夹返回True,否则返回Faulse
删除文件及文件夹
import os os.remove(folder_path) #删除文件 #导入shutil模块 import shutil base_dir=os.path.dirname(os.path.abspath(__file__)) #获取当前脚本文件所在的目录路径 db_path=os.path.join(base_dir,"xx") #生成完整的文件夹路径。 shutil.rmtree(db_path) #删除该文件夹及其内容,包括所有子目录和文件。
景区门票预订
#新用户和老用户都可以预定和查看历史订单 import os from datetime import datetime BASE_DIR = os.path.dirname(os.path.abspath(__file__)) DB_PATH = os.path.join(BASE_DIR, 'db') def booking(name, user_file_path):park_name = input("景区名字:")ticket_num = input("门票数量:")current_date = datetime.now().strftime("%Y-%m-%d")with open(user_file_path, mode='a',encoding="utf-8") as f:f.write(f"姓名:{name} 景区名字:{park_name} 门票数量:{ticket_num} 预定日期:{current_date}\n")print("预定成功") def history(name, user_file_path):print(f"{name}的历史订单:")if not os.path.exists(user_file_path) or os.path.getsize(user_file_path) == 0:print("暂无历史订单")else:with open(user_file_path, 'r') as f:for line in f:line = line.strip()print(line) def run():if not os.path.exists(DB_PATH):os.makedirs(DB_PATH)while True:name = input("姓名:")user_file_path = os.path.join(DB_PATH, f"{name}.txt")#老用户显示欢迎回来,新用户显示欢迎因用户if os.path.exists(user_file_path):print("欢迎回来")else:print("欢迎您,新用户")#将函数写入字典中choice = {"1": booking, "2": history}print("1,预定2 查看历史订单") choice1 = input("序号")func=choice.get(choice1)if choice1 == "1":func(name,user_file_path)continueelif choice1 == "2":func(name,user_file_path)continueelse:print("选择无效")continue if __name__ == '__main__':run()