Python在Windows系统下实现A4笔记法文档记录

A4纸笔记法是一种可以培养逻辑思维的方法,具体做法是将一张A4纸横放,第一行写主题和日期,后续每行把这个主题对应的想法写出来,时间控制在60s内,详细参考A4纸笔记法 - 简书。由于手头没有A4纸,想用Python实现windows下自动保存A4笔记的程序。

实现的效果:.py文件执行后,自动新建文本文档,自动用记事本打开文本文档,手动将笔记写入记事本后,按Crtl+S保存,自动按照主题和时间重命名,保存在指定目录,方便后续记录,笔记写完发通知告知用户笔记记录时长。

话不多说,上代码

#coding:utf-8
import time
import os
import subprocess

def text_create(filedir): #创建filedir文件
    file = open(filedir,'w',encoding='gbk')
    file.close()


#模拟windows通知
def send_notifycation (content: str = '', title: str = 'New notifycation',
                       tip_type: str = 'None', duration: int = 3) -> None:
    """
    模拟windows发系统通知
    参数
        content: str   必选,通知内容
        title: str     可选,通知标题
        tip_type: str  可选,通知类型[None|Info|Warning|Error]
        duration: int  可选,停留时长,单位(秒)
    """
    d = {}
    for c in (65, 97):
        for i in range(26):
            d[chr(i+c)] = chr((i+13) % 26 + c)
    s = ''
    s += "shapgvba Fraq-Abgvsvpngvba{cnenz ([Fgevat] $pbagrag='Abgvsvpngvbaf',"
    s += "[Fgevat] $gvc_gvgyr='Arj abgvsvpngvba',[Fgevat] $gvc_glcr='Abar',"
    s += "[Vag32] $qhengvba=3);cebprff{Nqq-Glcr -NffrzoylAnzr Flfgrz.Jvaqbjf"
    s += ".Sbezf;$nffrzoyl='Flfgrz.Jvaqbjf.Sbezf.AbgvslVpba';$abgvsl=Arj-"
    s += "Bowrpg $nffrzoyl -Cebcregl @{Vpba=[Flfgrz.Qenjvat.FlfgrzVpbaf]::"
    s += "Vasbezngvba;OnyybbaGvcVpba=$gvc_glcr;OnyybbaGvcGvgyr=$gvc_gvgyr;"
    s += "OnyybbaGvcGrkg=$pbagrag;Ivfvoyr=$gehr};$abgvsl.FubjOnyybbaGvc"
    s += "($qhengvba)}};Fraq-Abgvsvpngvba -pbagrag '%f' -gvc_gvgyr '%f' "
    s += "-gvc_glcr '%f' -qhengvba %f"
    subprocess.Popen(["PowerShell", '-ep', 'Unrestricted', '-nop',
                      '-win', 'Hidden', '-c', '& {%s}' % (
                        "".join([d.get(c, c) for c in (s)]) % (
                            content, title, tip_type, duration))
                    ])


savePath = os.path.abspath(os.path.dirname(__file__)) #获取.py文件的上级路径
noteDir = os.path.join(savePath ,'A4笔记文件夹') #文件夹名称路径
noteName = os.path.join(noteDir,'新建笔记文档.txt') #创建新笔记文件路径

if os.path.exists(noteDir): #判断是否存在noteDir文件夹
    pass     #存在此文件夹就跳过
else:
    os.mkdir(noteDir) #如果不存在文件夹就创建文件夹

text_create(noteName)  # 创建txt笔记文件

TextPopenObj = subprocess.Popen(['notepad',noteName]) #生成笔记Popen对象
startTime = time.time() #记录初始时间

while True:
    time.sleep(0.5) #每隔0.5s判断retcode
    retcode = TextPopenObj.poll() #笔记Popen对象调用poll判断子线程是否执行完, 执行结束返回0
    if retcode == 0: #retcode==0代表子线程运行结束,进入后续处理逻辑
        endTime = time.time() #记录结束时间
        txtTime=endTime - startTime #记录笔记时间

        with open(noteName,'r',encoding='gbk') as fo: #以读的方式,打开保存的笔记文件
            #读取第一行的内容,把特殊字符替换成用字符串替换空字符
            oneLine = fo.readline().replace(':','_').replace('\n','').replace('/','').replace('\\','').replace('*','').replace('?','').replace('"','').replace('<','').replace('>','').replace('|','')
            renameNewName = os.path.join(noteDir,oneLine)+'.txt' #把重命名的笔记路径重新拼接
        if oneLine=='': #如果第一行为空,代表没有保存任何字符,不改名不做处理
            pass
        else:
            os.rename(noteName,renameNewName) #调用os.rename改名
            send_notifycation(content=f'耗时{txtTime:.1f}秒\n{renameNewName}', title=f'笔记记录完成') #发送windows通知
        break

用到三个内置库,把.py改名成.pyw执行不显示黑框,显示效果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值