一键截图并保存

刚只是想实现简单的截图保存功能,后来加了日志,继续上一次学习的科目章节,加了一个重要截图单独保存《重要截图文件夹》的功能,自动重命名(时间做文件名),或者自己输入文件名,判断文件名是否合法,判断文件名时候重复,一键打开上次截图文件的目录,文件保存成功反馈等功能,后续加的功能不断完善,个人觉得比较完美了

首次运行
首次运行选择科目,选择功能
在这里插入图片描述

部分代码
在这里插入图片描述

代码

#自动截图并保存
from colorama import Fore,Back,Style
import keyboard
import os
from PIL import ImageGrab,Image
import time
Flag=True
open_img=False
one_run=True
img_name_b=True
dir=''
error="\/:*?\"<>|"
#sub_name里面是自动创建的文件夹名
sub_name=[
    ["高数","1.第一章:函数、极限与连续", "2.第二章:一元函数微分学", "3.第三章:一元函数积分学", "4.第四章:常微分方程", "5.第五章:多元函数微分学及其应用", "6.第六章:二重积分及其应用"],\
    ["计算机","1.第一章:计算机基础知识","2.第二章:Windows7操作系统","3.第三章:字处理软件 Word2010","4.第四章:电子表格软件 Excel2010","5.第五章:PowerPoint2010","6.第六章:计算机网络技术","7.第七章:多媒体基础知识","8.第八章:计算机信息安全"],\
    ["英语",'1.名词','2.代词','3.形容词副词','4.动词','5.介词','6.冠词','7.数词','8.时态语法','9.状语从句','10.定语从句','11.名词性从句','12.特殊句式',\
    '13.非谓语动词','14.虚拟语气','15.主谓一致','16.阅读理解','17.写作']
]
def img_judge(data):
    for i in data:
        if i in error:
            return False
    return True
def down_img(img_url,T):
    global img_name_b,dir
    im = ImageGrab.grab()
    t = time.strftime("%Y-%m-%d,%H:%M:%S", time.localtime())
    t = t.replace(" ", "")
    if os.path.isfile("./log.txt") == False:
        with open('./log.txt', 'w', encoding='utf-8') as f1:
            f1.close()
    if keyboard.is_pressed('shift') and keyboard.is_pressed('alt'):
        if not dir:
            dir=rf"{os.getcwd()}\{img_url}"
        os.system("explorer.exe %s" % dir)
        print(f"已打开文件夹{dir}")
    if keyboard.is_pressed('shift') and keyboard.is_pressed('enter'):
        dir=rf"{os.getcwd()}\{img_url}"
        img_name_b = True
        if T != "y" and  T != "Y":
            while img_name_b:
                img_sum=0
                sum=0
                img_name =''
                if not img_name:
                    while True:
                        if img_name=='':
                            print("\a")
                            while True:
                                # print("\tHello World") #红色
                                img_name = input("请给文件重命名>>>").strip()
                                if img_judge(img_name):
                                    break
                                else:
                                    print(f"文件重命名非法,不能包括【{error}】,请重新给文件命名")
                        else:
                            break
                for root, dirs, files in os.walk(rf"{os.getcwd()}\{img_url}"):
                    for i in files:
                        img_sum+=1
                    break
                for root, dirs, files in os.walk(rf"{os.getcwd()}\{img_url}"):
                    for file in files:
                        name_i=f"{img_name}.png"
                        if file == name_i:
                            T_F = input(("文件重命名【重复】!!!是否需要输出所有文件名,y or Y【输出】>>>")).strip()
                            if T_F == "y" or T_F == "Y":
                                for root, dirs, Files in os.walk(rf"{os.getcwd()}\{img_url}"):
                                    print(f"当前文件目录{os.getcwd()}\{img_url},所有的文件为:")
                                    for j in Files:
                                        print(os.path.join(j))
                                    break
                            break
                        sum+=1
                    break
                if sum == img_sum:
                    img_name_b = False
        else:
            img_name = t
        im.save(rf'{os.getcwd()}\{img_url}\{img_name}.png')
        with open('./log.txt','a+',encoding='utf-8')as f:
            f.write(f"已截屏保存至{os.getcwd()}\{img_url}\{img_name}.png\n")
            print("\a")
        f.close()
        print(f"已截屏保存至{os.getcwd()}\{img_url}\{img_name}.png")
        if open_img=="y" or open_img=="Y":
            img = Image.open(f"{os.getcwd()}\\{img_url}\\{img_name}.png")
            img.show()

    if keyboard.is_pressed('shift') and keyboard.is_pressed('ctrl'):
        dir = rf"{os.getcwd()}\{img_url}\重要截图"
        if not os.path.exists(f'{os.getcwd()}\{img_url}\重要截图'):
            os.mkdir(f'{os.getcwd()}\{img_url}\重要截图')
        img_name_b=True
        if T != "y" and T != "Y":
            while img_name_b:
                img_sum = 0
                sum = 0
                print("\a")
                while True:
                    img_name = input("请给文件重命名>>>").strip()
                    if img_judge(img_name):
                        break
                    else:
                        print(f"文件重命名非法,不能包括【{error}】,请重新给文件命名")
                for root, dirs, files in os.walk(rf"{os.getcwd()}\{img_url}\重要截图"):
                    for i in files:
                        img_sum += 1
                    break
                for root, dirs, files in os.walk(rf"{os.getcwd()}\{img_url}\重要截图"):
                    for file in files:
                        name_i = f"{img_name}.png"
                        if file == name_i:
                            T_F = input(("文件重命名【重复】!!!是否需要输出所有文件名,y or Y【输出】>>>")).strip()
                            if T_F == "y" or T_F == "Y":
                                for root, dirs, Files in os.walk(rf"{os.getcwd()}\{img_url}\重要截图"):
                                    print(f"当前文件目录{os.getcwd()}\{img_url}\重要截图,所有的文件为:")
                                    for j in Files:
                                        print(os.path.join(j))
                                    break
                            break
                        sum += 1
                    break
                if sum == img_sum:
                    img_name_b = False
        else:
            img_name=t
        im.save(rf'{os.getcwd()}\{img_url}\重要截图\{img_name}.png')
        with open('./log.txt','a+',encoding='utf-8')as f:
            f.write(f"已截屏保存至{os.getcwd()}\{img_url}\重要截图\{img_name}.png\n")
            print("\a")
        f.close()
        print(f"已截屏保存至{os.getcwd()}\{img_url}\重要截图\{img_name}.png")
        if open_img == "y" or open_img == "Y":
            img = Image.open(f"{os.getcwd()}\\{img_url}\\\重要截图\\{img_name}.png")
            img.show()

    if keyboard.is_pressed('shift') and keyboard.is_pressed('q'):
        global Flag
        Flag=False
        dir=''

def choice(now,now_sub):
    print(f"当前正在学习{now}")
    n = 0
    for i in sub_name:
        for j in i:
            if now==j:
                for l in i:
                    print(f"{l}")
                    n += 1
    now_learn=int(input("请选择正在学习的章节>>>").strip())
    img_url=f"专升本学习截图\{sub_name[now_sub][0]}\{sub_name[now_sub][now_learn]}"
    t1 = time.strftime("%Y-%m-%d", time.localtime())
    with open("./log.txt",'a+',encoding='utf-8')as f:
        f.write(f"{t1} 学习的{sub_name[now_sub][0]},{sub_name[now_sub][now_learn]}日志\n")
    f.close()
    with open("./last.txt",'a+',encoding='utf-8')as f:
        f.write(f"{sub_name[now_sub][0]},{sub_name[now_sub][now_learn]}\n")
    f.close()
    global open_img
    open_img=input("是否需要截图后自动打开,y or Y【确认】 任意输入【取消】,>>>").strip()
    T = input("是否需要当前时间重命名文件 y or Y【确认】,任意【自定义重命名】>>>").strip()
    print(f"当前正在学习{sub_name[now_sub][now_learn]}\n请保持本程序运行,任意界面按住<SHIFT+ENTER>截图并保存!<SHIFT+CTRL>重要截图单独保存!<SHIFT+ALT>打开截图文件目录!\n<SHIFT+Q>重新选择学科!保存成功会有响铃提醒!")
    while Flag:
        down_img(img_url,T)
def Continue(subject,chapter):
    Now_subject=-1
    Now_chapter=-1
    for i in range(len(sub_name)):
        if subject==sub_name[i][0]:
            Now_subject =i
            break
    for i in range(len(sub_name[Now_subject])):
        if chapter==sub_name[Now_subject][i]:
            Now_chapter=i
            break
    img_url = f"专升本学习截图\{sub_name[Now_subject][0]}\{sub_name[Now_subject][Now_chapter]}"
    t1 = time.strftime("%Y-%m-%d", time.localtime())
    with open("./log.txt", 'a+', encoding='utf-8') as f:
        f.write(f"{t1} 学习的{sub_name[Now_subject][0]},{sub_name[Now_subject][Now_chapter]}日志\n")
    f.close()
    global open_img
    open_img = input("是否需要截图后自动打开,y or Y【确认】,任意输入【取消】>>>").strip()
    T=input("是否需要当前时间重命名文件 y or Y【确认】,任意【自定义重命名】>>>").strip()
    print(f"当前正在学习{sub_name[Now_subject][Now_chapter]}\n请保持本程序运行,任意界面按住<SHIFT+ENTER>截图并保存!<SHIFT+CTRL>重要截图单独保存!<SHIFT+ALT>打开截图文件目录!\n<SHIFT+Q>重新选择学科!保存成功会有响铃提醒!")
    while Flag:
        down_img(img_url,T)
def run():
    global Flag,one_run
    Flag=True
    if not os.path.exists(f'{os.getcwd()}\专升本学习截图'):
        Q=input("检测到第一次运行,输入任意内容开始创建科目文件夹>>>")
    if not os.path.exists("./last.txt"):
        with open("./last.txt", 'w', encoding='utf-8') as f:
            f.close()
    with open("./last.txt",'r',encoding='utf-8')as f:
        Last=f.readlines()
    if Last and one_run==True:
        one_run=False
        Last_ls=Last[len(Last)-1].split(",")
        global Last_choice
        Last_choice=input(f"上一次学到了{Last_ls[0]},{Last_ls[1][:-1]},\n是否继续上次学习,任意输入【取消】,y or Y【继续】>>>")
        if Last_choice=="y"or Last_choice=="Y":
            Last_choice=True
            # print(f"继续上次学习,上次学习到了{Last_ls[0]},{Last_ls[1][:-1]}")
            Continue(Last_ls[0], Last_ls[1][:-1])
    else:
        root_url=f"{os.getcwd()}\专升本学习截图"
        if not os.path.exists('./专升本学习截图'):
            os.mkdir(root_url)
            for i in range(len(sub_name)):
                if not os.path.exists(f'{root_url}\{sub_name[i][0]}'):
                    os.mkdir(f'{root_url}\{sub_name[i][0]}')
                    # print(f"创建{root_url}\{sub_name[i][0]}文件夹成功!")
                for j in sub_name[i]:
                    if not os.path.exists(f'{root_url}\{sub_name[i][0]}/{j}'):
                        os.mkdir(f'{root_url}\{sub_name[i][0]}/{j}')
                        print(f"创建{root_url}\{sub_name[i][0]}/{j}文件夹成功!")
                        time.sleep(0.05)
            print("文件夹创建完成!")
        now_sub = int(input("该程序可以帮你自动截图并将截图文件保存至指定科目文件夹下\n1.高数 2.计算机 3.英语 4.政治>>>").strip())
        choice(sub_name[now_sub - 1][0], now_sub - 1)
if __name__=="__main__":
    while True:
        run()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值