With one 《 Hogwarts : A school history 》 Style of big characters ( Uh , This word doesn't seem to be big ……) The appearance of the title , Boring I have nothing to do , It's starting to work again ~
The program I did before , One is used Tkinter library , One is Pygame, In a word, it has a graphical interface . But as a lazy man , I am naturally lazy ( I know this very well ), This time, , I will come to a simple program without graphical interface .
This is an alarm clock , An alarm clock that can set the time ( Although the operation interface is a little crude , But it doesn't affect its powerful function ).
First , We will program the alarm clock to ring .
Let's create a new file , Suffix is “.pyw”( This can ensure that the program will not pop up a Python Its own window ).
First , Old rules , The first line must be :
#coding:utf-8
then , We need to import the required modules :
import datetime import pygame import os import time import random from pynput.keyboard import Key,Listener
Not many modules are required this time , Because I installed them originally , So I'm not sure if they should use pip install . Of course , Use PyCharm Programming can automatically install the uninstalled modules you use .
all_songs=[] all_songs_dict={} for root, dirs, names in os.walk("d:/Users/{}/Music".format(os.getlogin())): for filename in names: if os.path.join(root, filename)[-4:] == ".mp3" or os.path.join(root, filename)[-4:] == ".ogg": all_songs.append(os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]) all_songs_dict[ os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]] = os.path.join(root, filename).replace( "\\", "/")
First , We need to get music from the computer . We use it os.walk obtain Music All in folder ogg and mp3 file ( This is because I play music using Pygame, It seems that it only supports the music of these two files ). meanwhile , Through word processing of path string , Extract the music name and store it in the list all_songs, And store it in the dictionary corresponding to the original path all_songs_dict. At this time, the music information stored in these two variables is equivalent to an insurance mechanism , It can ensure that there is an alternate ringtone available when the ringtone file cannot be found ( Of course , If your music folder is empty , Of course it doesn't work ; But I don't think there will be no music in your folder ).
finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", ""))
Of course, our alarm clock time needs to be stored in a file , This can prevent this information from being lost . therefore , We opened a “alarm_list.txt” file ( To prevent the file from nonexistence , We need to open the file in write mode first , This allows you to create when the file does not exist ; At the same time, to prevent this operation, empty the file , We have to write in addition “a” instead of “w”). We will read the contents of the file , And delete the line feed and save it into alarm_list. We don't have to worry about the unrecognized contents in the document , Because the file is written by another editor , That program will ensure that the contents of the file are recognized by this program .
finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] =eval( dates_undone_two[i].replace("\n", ""))
Empathy , Yes “dates_one.txt” and “dates_two.txt” A similar process is required . Of course , Because there are tables stored in the file , We need to use eval() Function returns its table type . The second difference is that the contents of the two files are stored in a dictionary , Not tables .
finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""),"r") except: songs_undone_two[i]=all_songs_dict[all_songs[random.randint(0,len(all_songs)-1)]]+"\n" with open("songs_two.txt", "w")as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "")
In the face of “songs_one.txt” and “songs_two.txt” In the process of , We need to use tables all_songs 了 . To ensure that music exists , It will try to open the file that the path points to . If you can't find the file , It will change the music to all_songs A random music recorded in ( It can be improved here : Add one more if Judge , If the file suffix pointed to by the path is not “.mp3” or “.ogg”, You also have to modify the music . Readers interested in this job can add , I won't give you any more code here —— This is mainly because when I explain my program code, even if I find something unreasonable , As long as it's not a big problem , I don't want to change my habit ).
finding = open("alarm_list.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_two.txt", "w") as finding: finding.write(finder)
I do not know why to delete the program fragment of the alarm clock , There have been some BUG, It will leave a blank line when deleting the alarm clock at the end ( This will cause the program to run incorrectly ). therefore , It is necessary for us to do something about the consequences : Delete the newline character at the end of each file . And this program does such a job .
def delete(i): global all_songs, all_songs_dict, alarm_list, dates, songs,alarm_list_undone,dates_undone_one,dates_undone_two,songs_undone_one,songs_undone_two try: try: alarm_list_undone.remove(i) alarm_list[-1] = alarm_list[-1].replace("\n", "") except: alarm_list_undone.remove(i + "\n") except: if False: print() alarm_list.remove(i) with open("alarm_list.txt", "w") as finding: finding.writelines(alarm_list_undone) for j in range(len(songs_undone_one)): if songs_undone_one[j] == i or songs_undone_one[j] == i + "\n": songs_undone_one.pop(j) songs_undone_two.pop(j) try: songs_undone_one[-1]=songs_undone_one[-1].replace("\n", "") songs_undone_two[-1]=songs_undone_two[-1].replace("\n", "") except: if False: print() songs = {} for j in range(len(songs_undone_one)): songs[songs_undone_one[j].replace("\n", "")] = songs_undone_two[j].replace("\n", "") with open("songs_one.txt", "w") as finding: finding.writelines(songs_undone_one) with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for j in range(len(dates_undone_one)): if dates_undone_one[j] == i or dates_undone_one[j] == i + "\n": dates_undone_one.pop(j) dates_undone_two.pop(j) try: dates_undone_one[-1]=dates_undone_one[-1].replace("\n", "") dates_undone_two[-1]=dates_undone_two[-1].replace("\n", "") except: if False: print() dates = {} for j in range(len(dates_undone_one)): dates[dates_undone_one[j].replace("\n", "")] = dates_undone_two[j].replace("\n", "") with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two)
This is what I just mentioned BUG Delete program for . Here's the i It's the time of the alarm clock ( In this program , The alarm clock time is unique , One time only corresponds to one alarm clock ). This program attempts to delete i All corresponding information , however , For alarm clocks at the end of files and tables , It does not deal effectively with . I tried to get him to remove the line break at the end of the previous entry , But clearly something went wrong . I had to add another line of code to make up for the consequences .
def play_it(url): global Listener pygame.mixer.init() t = pygame.mixer.music.load(url) pygame.mixer.music.play() def on_release(key): if key == Key.space: pygame.mixer.music.stop() with Listener(on_release=on_release) as Listener: Listener.join()
Player , Used to play music when the time is up . Not only does it use Pygame The music of , Also used. Pynput The keyboard monitor , This turns off the music when you press the space ( Of course , Sometimes I may turn off the alarm clock by mistake while typing , But it doesn't matter —— You can set another button that you don't usually use to turn off the alarm clock ).
def alarm(): global all_songs,all_songs_dict,alarm_list,dates,songs while True: try:
without doubt , After the code , It follows the core code of the program . But the next paragraph is undoubtedly disappointing :
e = time.time() finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""), "r") except: songs_undone_two[i] = all_songs_dict[all_songs[random.randint(0, len(all_songs) - 1)]] + "\n" with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") finding = open("alarm_list.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("songs_two.txt", "w") as finding: finding.write(finder)
you 're right , This is the previously stored loaded code . This is to refresh the reading of the file , After all , You will probably change the alarm clock while the program is running .
for i in alarm_list: if str(datetime.datetime.now())[11:16] == i: if time.strftime("%w", time.localtime()) in dates.get(i): url = songs.get(i) True_False=int(time.strftime("%Y", time.localtime())) < int(dates.get(i)[-1][4:8]) or (int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int(time.strftime("%j", time.localtime())) <= int(dates.get(i)[-1][9:])) if int(time.strftime("%Y", time.localtime())) > int(dates.get(i)[-1][4:8]) or ( int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int( time.strftime("%j", time.localtime())) >= int(dates.get(i)[-1][9:])): delete(i) if True_False: play_it(url) else: if int(time.strftime("%Y", time.localtime())) > int(dates.get(i)[-1][4:8]) or ( int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int( time.strftime("%j", time.localtime())) > int(dates.get(i)[-1][9:])): delete(i) if int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int(time.strftime("%j", time.localtime())) == int(dates.get(i)[-1][9:]) and int(str(datetime.datetime.now())[11:13])*60+int(str(datetime.datetime.now())[14:16]) > int(i[:2])*60+int(i[3:]): delete(i)
This is the core code you expect ( Although the function is very core , But it is still very simple ) We will traverse the alarm list , Compare the time with the time set by the alarm clock , If this is the time set by an alarm clock , At the same time, the position of the current date in the week ( Let's put it this way , I suddenly found something like “ Monday ” Such words seem to …… There is no general designation ) Also exists in the corresponding table , At the same time, the current date has not exceeded the deadline of the alarm clock , We will ring the bell ( The ringing tone will follow the setting of the alarm clock ). meanwhile , For the alarm clock that has expired , It will be deleted .
such , The procedure of ringing the bell has been preliminarily completed . however , In order that the program does not occupy the process ( This is true of many alarm programs ), We still need to add this code :
time.sleep(1 - (time.time() - e)) except: time.sleep(1 - (time.time() - e))
Of course, you have to run the function finally :
alarm()
such , We finished the alarm clock program .
Attach complete code :
#coding:utf-8 import datetime import pygame import os import time import random from pynput.keyboard import Key,Listener all_songs=[] all_songs_dict={} for root, dirs, names in os.walk("d:/Users/{}/Music".format(os.getlogin())): for filename in names: if os.path.join(root, filename)[-4:] == ".mp3" or os.path.join(root, filename)[-4:] == ".ogg": all_songs.append(os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]) all_songs_dict[ os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]] = os.path.join(root, filename).replace( "\\", "/") finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] =eval( dates_undone_two[i].replace("\n", "")) finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""),"r") except: songs_undone_two[i]=all_songs_dict[all_songs[random.randint(0,len(all_songs)-1)]]+"\n" with open("songs_two.txt", "w")as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") finding = open("alarm_list.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder=finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_two.txt", "w") as finding: finding.write(finder) def delete(i): global all_songs, all_songs_dict, alarm_list, dates, songs,alarm_list_undone,dates_undone_one,dates_undone_two,songs_undone_one,songs_undone_two try: try: alarm_list_undone.remove(i) alarm_list[-1] = alarm_list[-1].replace("\n", "") except: alarm_list_undone.remove(i + "\n") except: if False: print() alarm_list.remove(i) with open("alarm_list.txt", "w") as finding: finding.writelines(alarm_list_undone) for j in range(len(songs_undone_one)): if songs_undone_one[j] == i or songs_undone_one[j] == i + "\n": songs_undone_one.pop(j) songs_undone_two.pop(j) try: songs_undone_one[-1]=songs_undone_one[-1].replace("\n", "") songs_undone_two[-1]=songs_undone_two[-1].replace("\n", "") except: if False: print() songs = {} for j in range(len(songs_undone_one)): songs[songs_undone_one[j].replace("\n", "")] = songs_undone_two[j].replace("\n", "") with open("songs_one.txt", "w") as finding: finding.writelines(songs_undone_one) with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for j in range(len(dates_undone_one)): if dates_undone_one[j] == i or dates_undone_one[j] == i + "\n": dates_undone_one.pop(j) dates_undone_two.pop(j) try: dates_undone_one[-1]=dates_undone_one[-1].replace("\n", "") dates_undone_two[-1]=dates_undone_two[-1].replace("\n", "") except: if False: print() dates = {} for j in range(len(dates_undone_one)): dates[dates_undone_one[j].replace("\n", "")] = dates_undone_two[j].replace("\n", "") with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) def play_it(url): global Listener pygame.mixer.init() t = pygame.mixer.music.load(url) pygame.mixer.music.play() def on_release(key): if key == Key.space: pygame.mixer.music.stop() with Listener(on_release=on_release) as Listener: Listener.join() def alarm(): global all_songs,all_songs_dict,alarm_list,dates,songs while True: try: e = time.time() finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""), "r") except: songs_undone_two[i] = all_songs_dict[all_songs[random.randint(0, len(all_songs) - 1)]] + "\n" with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") finding = open("alarm_list.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder = finding.read() while finder[-1] == "\n": finder = finder[:-1] with open("songs_two.txt", "w") as finding: finding.write(finder) for i in alarm_list: if str(datetime.datetime.now())[11:16] == i: if time.strftime("%w", time.localtime()) in dates.get(i): url = songs.get(i) True_False=int(time.strftime("%Y", time.localtime())) < int(dates.get(i)[-1][4:8]) or (int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int(time.strftime("%j", time.localtime())) <= int(dates.get(i)[-1][9:])) if int(time.strftime("%Y", time.localtime())) > int(dates.get(i)[-1][4:8]) or ( int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int( time.strftime("%j", time.localtime())) >= int(dates.get(i)[-1][9:])): delete(i) if True_False: play_it(url) else: if int(time.strftime("%Y", time.localtime())) > int(dates.get(i)[-1][4:8]) or ( int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int( time.strftime("%j", time.localtime())) > int(dates.get(i)[-1][9:])): delete(i) if int(time.strftime("%Y", time.localtime())) == int(dates.get(i)[-1][4:8]) and int(time.strftime("%j", time.localtime())) == int(dates.get(i)[-1][9:]) and int(str(datetime.datetime.now())[11:13])*60+int(str(datetime.datetime.now())[14:16]) > int(i[:2])*60+int(i[3:]): delete(i) time.sleep(1 - (time.time() - e)) except: time.sleep(1 - (time.time() - e)) print(all_songs) print(all_songs_dict) print(alarm_list) print(dates) print(songs) alarm()
Are you wondering : How do we set the alarm clock ? What follows , Let's settle this matter .
The easiest way , Of course, manually input the alarm clock into the file .“alarm_list.txt” You need to enter the time of the alarm clock in , Format “00:00”;“dates_one.txt” and “songs_one.txt” In fact, this content is stored in .“songs_two.txt” Is the path of music , It's okay ; most important of all “dates_two.txt”. Let's take an example .“['1', '2', '3', '4', '5', 'kill9999&99']”, What's the meaning of this? ?“1”“2”“3”“4”“5” The week when the bell rings , among “0” On behalf of the Sunday ,“1” On behalf of the Monday , And so on .“kill9999&99” Is the alarm clock due date , Or the expiration date ,“9999” is ,“99” Is the number of days in the year ,“kill9999&99” Meaning for “ Valid until 9999 Year of 4 month 9 Japan ”, Here we can simply and rudely think of it as never stopping ( Because generally speaking , This program will never run until that day ). in other words “['1', '2', '3', '4', '5', 'kill9999&99']” It means , The bell rings every weekday , Always effective .
Of course , It would actually be more tedious , So I went through a series of more tedious steps , Made an alarm clock setting program ( Only the code is given here , Because it mainly contains simple but repeated contents ):
#coding:utf-8 import random import os import datetime import time try: all_songs = [] all_songs_dict = {} for root, dirs, names in os.walk("d:/Users/{}/Music".format(os.getlogin())): for filename in names: if os.path.join(root, filename)[-4:] == ".mp3" or os.path.join(root, filename)[-4:] == ".ogg": all_songs.append(os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]) all_songs_dict[ os.path.join(root, filename)[os.path.join(root, filename).find("\\") + 1:-4]] = os.path.join(root, filename).replace( "\\", "/") finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""), "r") except: songs_undone_two[i] = all_songs_dict[all_songs[random.randint(0, len(all_songs) - 1)]] + "\n" with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") finding = open("alarm_list.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_two.txt", "w") as finding: finding.write(finder) print(" Please select service :") print() print("1: New alarm clock ") print("2: Manage alarm clock ") print() top = input(" Your choice :") if top == "1": print() set_time = input(" Please enter the alarm time ( Format :00:00):") have_it = False for i in alarm_list: if i == set_time: have_it = True try: alarm_list_undone[-1] += "\n" except: if False: print() alarm_list_undone.append(set_time) alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) with open("alarm_list.txt", "w") as finding: finding.writelines(alarm_list_undone) print() print(" Please select the number of rings :") print() print(" 1: Only once ") print(" 2: Every day ") print(" 3: Working day ") print(" 4: Customize ") print() set_date = input(" Your choice :") if set_date == "1": if int(set_time[:set_time.find(":")]) * 60 + int(set_time[set_time.find(":") + 1:]) <= int( str(datetime.datetime.now())[11:16][:str(datetime.datetime.now())[11:16].find(":")]) * 60 + int( str(datetime.datetime.now())[11:16][str(datetime.datetime.now())[11:16].find(":") + 1:]): try: dates_undone_one[-1] += "\n" except: if False: print() dates_undone_one.append(set_time) try: dates_undone_two[-1] += "\n" except: if False: print() dates_undone_two.append(str([(datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%w"), "kill{}&{}".format( (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y"), (datetime.datetime.now() + datetime.timedelta(days=1)).strftime( "%j"))])) else: try: dates_undone_one[-1] += "\n" except: if False: print() dates_undone_one.append(set_time) try: dates_undone_two[-1] += "\n" except: if False: print() dates_undone_two.append(str([(datetime.datetime.now()).strftime("%w"), "kill{}&{}".format((datetime.datetime.now()).strftime("%Y"), (datetime.datetime.now()).strftime("%j"))])) dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) if set_date == "2": try: dates_undone_one[-1] += "\n" except: if False: print() dates_undone_one.append(set_time) try: dates_undone_two[-1] += "\n" except: if False: print() dates_undone_two.append(str(["1", "2", "3", "4", "5", "6", "0", "kill9999&99"])) dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) if set_date == "3": try: dates_undone_one[-1] += "\n" except: if False: print() dates_undone_one.append(set_time) try: dates_undone_two[-1] += "\n" except: if False: print() dates_undone_two.append(str(["1", "2", "3", "4", "5", "kill9999&99"])) dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) if set_date == "4": list_one = [] math_to_week = {0: " Sunday ", 1: " Monday ", 2: " Tuesday ", 3: " Wednesday ", 4: " Thursday ", 5: " Friday ", 6: " Saturday "} for i in range(7): print() yes_no = input(" {} Do you want to ring ( It's input “1”, No input “0”):".format(math_to_week.get(i))) if yes_no == "1": list_one.append(str(i)) list_one.append("kill9999&99") try: dates_undone_one[-1] += "\n" except: if False: print() dates_undone_one.append(set_time) try: dates_undone_two[-1] += "\n" except: if False: print() dates_undone_two.append(str(list_one)) dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) print() print(" Please select ringing tone :") print() num = 0 for i in all_songs: num += 1 print(" " + str(num) + ":《" + i + "》") num += 1 print(" " + str(num) + ": Optional ") print() set_song = input(" Your choice :") if not set_song == str(num): song = all_songs_dict[all_songs[int(set_song) - 1]] else: print() song = input(" Please enter the path :") try: songs_undone_one[-1] += "\n" except: if False: print() songs_undone_one.append(set_time) try: songs_undone_two[-1] += "\n" except: if False: print() songs_undone_two.append(song) songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""), "r") except: songs_undone_two[i] = all_songs_dict[all_songs[random.randint(0, len(all_songs) - 1)]] + "\n" with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") with open("songs_one.txt", "w") as finding: finding.writelines(songs_undone_one) with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) else: print() print(" Please select the alarm clock to delete :") print() for i in range(len(alarm_list)): if dates[alarm_list[i]][-1] != "kill9999&99": date_type = " Only once " elif dates[alarm_list[i]] == ["1", "2", "3", "4", "5", "6", "0", "kill9999&99"]: date_type = " Every day " elif dates[alarm_list[i]] == ["1", "2", "3", "4", "5", "kill9999&99"]: date_type = " Working day " else: date_type = " Customize " print(" {}: Time :{}; Number of rings :{}; music :《{}》;".format(i + 1, alarm_list[i], date_type, songs[alarm_list[i]][ songs[alarm_list[i]].rfind( "/") + 1:songs[ alarm_list[i]].rfind(".")])) print() delete = int(input(" Your choice :")) alarm_list_undone.pop(delete - 1) dates_undone_one.pop(delete - 1) dates_undone_two.pop(delete - 1) songs_undone_one.pop(delete - 1) songs_undone_two.pop(delete - 1) with open("alarm_list.txt", "w") as finding: finding.writelines(alarm_list_undone) with open("songs_one.txt", "w") as finding: finding.writelines(songs_undone_one) with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) with open("dates_one.txt", "w") as finding: finding.writelines(dates_undone_one) with open("dates_two.txt", "w") as finding: finding.writelines(dates_undone_two) finding = open("alarm_list.txt", "a") finding.close() finding = open("alarm_list.txt", "r") alarm_list_undone = finding.readlines() finding.close() alarm_list = [] for i in alarm_list_undone: alarm_list.append(i.replace("\n", "")) finding = open("dates_one.txt", "a") finding.close() finding = open("dates_one.txt", "r") dates_undone_one = finding.readlines() finding.close() finding = open("dates_two.txt", "a") finding.close() finding = open("dates_two.txt", "r") dates_undone_two = finding.readlines() finding.close() dates = {} for i in range(len(dates_undone_one)): dates[dates_undone_one[i].replace("\n", "")] = eval(dates_undone_two[i].replace("\n", "")) finding = open("songs_one.txt", "a") finding.close() finding = open("songs_one.txt", "r") songs_undone_one = finding.readlines() finding.close() finding = open("songs_two.txt", "a") finding.close() finding = open("songs_two.txt", "r") songs_undone_two = finding.readlines() finding.close() songs = {} for i in range(len(songs_undone_two)): try: open(songs_undone_two[i].replace("\n", ""), "r") except: songs_undone_two[i] = all_songs_dict[all_songs[random.randint(0, len(all_songs) - 1)]] + "\n" with open("songs_two.txt", "w") as finding: finding.writelines(songs_undone_two) for i in range(len(songs_undone_one)): songs[songs_undone_one[i].replace("\n", "")] = songs_undone_two[i].replace("\n", "") finding = open("alarm_list.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("alarm_list.txt", "w") as finding: finding.write(finder) finding = open("dates_one.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_one.txt", "w") as finding: finding.write(finder) finding = open("dates_two.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("dates_two.txt", "w") as finding: finding.write(finder) finding = open("songs_one.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_one.txt", "w") as finding: finding.write(finder) finding = open("songs_two.txt", "r") finder = finding.read() try: while finder[-1] == "\n": finder = finder[:-1] except: while False: print() with open("songs_two.txt", "w") as finding: finding.write(finder) except: while False: print()
This program cannot be pyw file , And must be py( Because it requires input and output ). We need to put it in the same folder as the ring program just now , And create a shortcut for each of the two programs . then , We're going to put the ring program into “ start-up ” Folder ( stay C disc , The name is “StartUp”. Its path on my computer is “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp”, The path may be slightly different on different computers , But search always finds it ). And another one. , A shortcut to this setup program , You can put it on the table , Easy to open the program .