Python 学习 ——懒人日志提醒小程序(欢迎指点和批评)

本文介绍了作者如何使用Python编写一个小程序,用于自动记录每日工作内容,包括日期、工作内容、时长和加班情况,并自动生成Excel表格。程序还能实现开机自动启动,通过bat文件和快捷方式管理。
摘要由CSDN通过智能技术生成

       

        总是忘记每天填写工作日志,记录当天工作内容。学习了Python后,我用简单的基础代码编制了一个小程序。

        个人认为学习编程,就需要不断的寻找项目,没有项目创造项目,这样才能不断地丰富自己的编程技术。

        修正一个Bug,如果bat文件放在启动文件夹中,生成的文件会创建者c:\windows路径下。

        解决办法:将bat文件放在日志存放的目录下,生成快捷方式放在启动文件夹下。

     本小程序实现效果:

       1、开机自动启动。

       2、输入日期、工作内容、工作时间、是否加班等信息。

       3、自动生成excel表格

     程序编写过程:

      本程序由三个文件组成

      1、主文件 work_log.py

           输入日志内容,检查是否输错,调用t.py。

day = input('请输入记录日志日期(例如20240808):')

work = input('请输入当前日期工作内容:')
times_range = input('请输入工作时长:')
if_overtime = input('请输入是否加班:')
jiancha = input('输入正确请按y,否则请按n:')
while jiancha =='n':
    day = input('请输入记录日志日期:')
    work = input('请输入当前日期工作内容:')
    times_range = input('请输入工作时长:')
    if_overtime = input('请输入是否加班:')
    jiancha = input('输入正确请按y,否则请按n:')
import t
t.t_1(day,work,times_range,if_overtime)

      2、副文件 t.py

           根据主文件输入的日期,判断是星期几,并生成weekday属性。

def t_1(day,work,times_range,if_overtime):
    from datetime import datetime

    def get_weekday():
        # print(day)
        date = datetime.strptime(day, "%Y%m%d")
        weekday = date.weekday()
        return weekday
    weekday = get_weekday()
    if weekday == 0:
        weekday = '星期一'
    elif weekday == 1:
        weekday = '星期二'
    elif weekday == 2:
        weekday ='星期三'
    elif weekday == 3:
        weekday = '星期四'
    elif weekday == 4:
        weekday ='星期五'
    elif weekday == 5:
        weekday ='星期六'
    else:
        weekday = '星期日'
    data = {
       f'{day[4:6]}月份':[day,times_range,work,weekday,if_overtime]
    }
    demo = Demo()
    demo.SaveExcels(data,'驻场工作日志','驻场日志',('日期','时长','工作内容','星期','是否加班'))

      3、ExcelDemo excel模版程序

借用别人编写的,生成excel文件

'''
通过调用这个文件中的方法,可以直接操作excel

'''
import os, xlwt, xlrd
from xlutils.copy import copy
class Demo:
    # 单表数据存储
    @staticmethod
    def SaveExcel(data, folder, sheet, sheet1_headers):
        '''
        :param data: 字典:{子表名:[数据值]}
        :param folder: 文件夹路径
        :param sheet: excel文件名(工作簿)
        :param sheet1_headers:  表头 元组类型
        :return:
        '''
        # 获取当前路径
        os_mkdir_path = os.getcwd() + f'/{folder}/'
        # 判断这个路径是否存在,不存在就创建
        if not os.path.exists(os_mkdir_path):
            os.mkdir(os_mkdir_path)  # 创建一个名为数据的文件夹
        # 判断excel表格是否存在           工作簿文件名称
        os_excel_path = os_mkdir_path + f'{sheet}.xls'
        if not os.path.exists(os_excel_path):
            # 不存在,创建工作簿(也就是创建excel表格)
            workbook = xlwt.Workbook(encoding='utf-8')
            """工作簿中创建新的sheet表"""  # 设置表名
            for i in data.keys():
                key = i
            worksheet1 = workbook.add_sheet(key, cell_overwrite_ok=True)  # data 是要创建的表名
            # 这个表名必须要和data字典中的key一致
            """设置sheet表的表头"""
            # sheet1_headers = ('评论内容', '评论时间', '点赞数量', '用户名')
            # 将表头写入工作簿
            for header_num in range(0, len(sheet1_headers)):
                # 设置表格长度
                worksheet1.col(header_num).width = 2560 * 3
                # 写入            行, 列,           内容
                worksheet1.write(0, header_num, sheet1_headers[header_num])
            # 循环结束,代表表头写入完成,保存工作簿
            workbook.save(os_excel_path)
        # 判断工作簿是否存在
        if os.path.exists(os_excel_path):
            # 打开工作簿
            workbook = xlrd.open_workbook(os_excel_path)
            # 获取工作薄中所有表的个数
            sheets = workbook.sheet_names()
            for i in range(len(sheets)):
                for name in data.keys():
                    worksheet = workbook.sheet_by_name(sheets[i])
                    # 获取工作薄中所有表中的表名与数据名对比
                    if worksheet.name == name:
                        # 获取表中已存在的行数
                        rows_old = worksheet.nrows
                        # 将xlrd对象拷贝转化为xlwt对象
                        new_workbook = copy(workbook)
                        # 获取转化后的工作薄中的第i张表
                        new_worksheet = new_workbook.get_sheet(i)
                        for num in range(0, len(data[name])):
                            new_worksheet.write(rows_old, num, data[name][num])
                        new_workbook.save(os_excel_path)
    # 多表数据存储
    @staticmethod
    def SaveExcels(data, folder, sheet, sheet1_headers):
        '''
        :param data: 字典{sheet名:[数据值]}
        :param folder:  文件夹名字
        :param sheet:   excel文件名(工作簿)
        :param sheet1_headers:  表头 元组类型
        :return:
        '''

        # 获取表的名称
        sheet_name = [i for i in data.keys()][0]
        # 创建保存excel表格的文件夹
        # os.getcwd() 获取当前文件路径
        os_mkdir_path = os.getcwd() + f'/{folder}/'
        # 判断这个路径是否存在,不存在就创建
        if not os.path.exists(os_mkdir_path):
            os.mkdir(os_mkdir_path)
        # 判断excel表格是否存在           工作簿文件名称
        os_excel_path = os_mkdir_path + f'{sheet}.xls'
        if not os.path.exists(os_excel_path):
            # 不存在,创建工作簿(也就是创建excel表格)
            workbook = xlwt.Workbook(encoding='utf-8')
            """工作簿中创建新的sheet表"""  # 设置表名
            worksheet1 = workbook.add_sheet(sheet_name, cell_overwrite_ok=True)
            """设置sheet表的表头"""
            # sheet1_headers = ('评论内容', '评论时间', '点赞数', '用户名')
            # 将表头写入工作簿
            for header_num in range(0, len(sheet1_headers)):
                # 设置表格长度
                worksheet1.col(header_num).width = 2560 * 3
                # 写入表头        行,    列,           内容
                worksheet1.write(0, header_num, sheet1_headers[header_num])
            # 循环结束,代表表头写入完成,保存工作簿
            workbook.save(os_excel_path)
        """=============================已有工作簿添加新表==============================================="""
        # 打开工作薄
        workbook = xlrd.open_workbook(os_excel_path)
        # 获取工作薄中所有表的名称
        sheets_list = workbook.sheet_names()
        # 如果表名称:字典的key值不在工作簿的表名列表中
        if sheet_name not in sheets_list:
            # 复制先有工作簿对象
            work = copy(workbook)
            # 通过复制过来的工作簿对象,创建新表  -- 保留原有表结构
            sh = work.add_sheet(sheet_name)
            # 给新表设置表头
            # excel_headers_tuple = ('日期', '姓名', '年龄', '性别', '电话号码')
            for head_num in range(0, len(sheet1_headers)):
                sh.col(head_num).width = 2560 * 3
                #               行,列,  内容,            样式
                sh.write(0, head_num, sheet1_headers[head_num])
            work.save(os_excel_path)
        """========================================================================================="""
        # 判断工作簿是否存在
        if os.path.exists(os_excel_path):
            # 打开工作簿
            workbook = xlrd.open_workbook(os_excel_path)
            # 获取工作薄中所有表的个数
            sheets = workbook.sheet_names()
            for i in range(len(sheets)):
                for name in data.keys():
                    worksheet = workbook.sheet_by_name(sheets[i])
                    # 获取工作薄中所有表中的表名与数据名对比
                    if worksheet.name == name:
                        # 获取表中已存在的行数
                        rows_old = worksheet.nrows
                        # 将xlrd对象拷贝转化为xlwt对象
                        new_workbook = copy(workbook)
                        # 获取转化后的工作薄中的第i张表
                        new_worksheet = new_workbook.get_sheet(i)
                        for num in range(0, len(data[name])):
                            new_worksheet.write(rows_old, num, data[name][num])
                        new_workbook.save(os_excel_path)

# 创建类型对象.方法
# Demo().SaveExcel()
# data = {
#     'data111': [1, 2, 4, 5]
# }
# # 类名.方法
# Demo.SaveExcel(data,'数据文件夹','爬虫数据',('a','b','c','d'))

开机自启动

1、创建一个txt文件,将扩展名变为bat。记得写好路径。

python d:\myproject\work_log\work_log.py

2、将该程序快捷方式放在启动文件夹中

Windows 徽标键+ R,键入“shell:startup”,然后选择“确定”。 这将打开“启动”文件夹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值