954,525 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Program abruptly quits

Hey guys,

I have made a program called 'tLapse', here's the code:

import subprocess
import time
import os

print("Welcome to tLapse...")
time.sleep(3)
os.system('cls')

try:
    com=open("action.txt",'r').read()
    condition=True
except:
    print("File error")
    raw_input("<Any key to quit>")
    condition=False

if(condition):
    clock=raw_input("Enter time duration after which\nuser-specifiedaction will be\npeformed.\n\nFormat- [hh:mm][24- hour format]: ")

def app(path):
    ext=path[-3:]
    try:
        if(ext=='exe'):
            subprocess.call([path])
        elif(ext=='mp3'):
            subprocess.call(["C:\Program Files\Windows Media Player\wmplayer.exe",path])
    except:
        print("Unexpected error occured")
    raw_input("<Any key to quit>")

def shutdown():
    os.system("shutdows -s")
    
def determine(com):
    for x in com:
        if(x==' '):
            ind=com.index(x)
            type=com[:ind]
            path=com[ind+1:]
    if(type=='open'):
        return path
    elif(type=='shutdown'):
        shutdown()

path=determine(com)

if(condition):
    print("Waiting till "+clock+"...")
    while(clock!=str(time.asctime()[11:16])):
        if(clock==str(time.asctime()[11:16])):
            os.system('cls')
            app(path)


What it does is, it basically asks at what time the specified action has to be performed(action specified in 'action.txt' file).

But the problem is, even though I give thoroughly valid commands, it abruptly quits without reporting any errors, and sometimes it magically works(like, after running it a few dozen times with the same commands specified in the .txt file).

Any idea why?

sravan953
Posting Whiz in Training
243 posts since May 2009
Reputation Points: 2
Solved Threads: 30
 

Most likely your while loop is the problem. You are telling while to loop as long as clock does not match the time, but inside the loop you have if with a condition to match clock and time.

vegaseat
DaniWeb's Hypocrite
Moderator
5,989 posts since Oct 2004
Reputation Points: 1,345
Solved Threads: 1,417
 

Thank you vegaseat. I have modified the code:

import subprocess
import time
import os

print("Welcome to tLapse...")
time.sleep(3)
os.system('cls')

try:
    type=open("action.txt",'r').read().split("~")[0]
    com=open("action.txt",'r').read().split("~")[1]
    ext=open("action.txt",'r').read().split("~")[1][-3:]
    condition=True
except:
    print("File error")
    raw_input("<Any key to quit>")
    condition=False

if(condition):
    clock=raw_input("Enter time duration after which\nuser-specified action will be\npeformed.\n\nFormat- [hh:mm][24- hour format]: ")

def app(ext):
    try:
        if(ext=='exe'):
            subprocess.call([path])
        elif(ext=='mp3'):
            subprocess.call(["C:\Program Files\Windows Media Player\wmplayer.exe",path])
    except:
        print("Unexpected error occured")
    raw_input("<Any key to quit>")

def shutdown():
    os.system("shutdows -s")

while(clock!=str(time.asctime)[11:16]):
    run_condition=False
    
run_condition=True
app(ext)
sravan953
Posting Whiz in Training
243 posts since May 2009
Reputation Points: 2
Solved Threads: 30
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: