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