[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Python Guru needed





On Wed, Jan 7, 2009 at 11:01 PM, Paulo Cavalcanti <promac gmail com> wrote:


On Wed, Jan 7, 2009 at 10:52 PM, Jim <mickeyboa sbcglobal net> wrote:
Ed Greshko wrote:
Jim wrote:
 
Arthur Pemberton wrote:
   
On Wed, Jan 7, 2009 at 5:18 PM, Arthur Pemberton <pemboa gmail com>
wrote:
       
On Wed, Jan 7, 2009 at 5:06 PM, Jim <mickeyboa sbcglobal net> wrote:
         
Matthew Flaschen wrote:
             
Jim wrote:

                 
FC 10/KDE

I'm trying to set a simple Alarm Clock in FC10 and I have a Python
script I picked up, but I have error, running the script.
Can you explain to me with # comments on each line how to make
this work.

import time
import os

not_executed = 1

while(not_executed):
dt = list(time.localtime(time.time())
hour = dt[3]
minute = dt[4]
if hour == 5 and minute == 45:
os.popen2("open /Users/jun/shout.mp3")
not_executed = 0


Error Message;

$ python AlarmClock
 File "AlarmClock", line 7
 dt = list(time.localtime(time.time())
  ^
IndentationError: expected an indented block

                       
It's because of Python's always charming significant whitespace. I.E.
Python uses indenting instead of braces, making problems like this
extremely common.  (No sane language even has "IndentationErrors".
Also,
you were missing a paren, but that's not what caused the error above.

A correct version is attached.  Hopefully it will not get mangled by
your client.

Matt Flaschen

                   
I ran yo
$ python times.py
Welcome to the talking alarm clock
This program is public domain

Traceback (most recent call last):
 File "times.py", line 1, in <module>
 import time
 File "/home/mickey/time.py", line 8, in <module>
 t = time.localtime(time.time())

AttributeError: 'module' object has no attribute 'localtime'

Python is having problems of execute this line.

t = time.localtime(time.time())
               
1) This is getting offtopic
2) You need to at least send us the script you're using
3) There is no way that that line of code doesn't work if you did
`import time` first
4) You may want to check and IRC channel such as
irc://freenode.net/fedora
           
Also, there are several alarm apps already in Fedora, it doesn't seem
like you're trying to learn Python, so might be best to just use an
already existing app.


       
I told you in the beginning I know nothing about Python.
I'm getting answers that assume, I know what your talking about, I
don't, I just have a script that I'm asking how it works.
What are the other scripts that are already in Fedora.

   
I know nothing about python either.....  But the comments of others has
got me to ....

import time
import os

not_executed = 1

while(not_executed):
       dt = list(time.localtime(time.time()))
       hour = dt[3]
minute = dt[4]
if hour == 5 and minute == 45:
       os.popen2("open /Users/jun/shout.mp3")
not_executed = 0


I added a "tab" to Lines 7 and 8 as well as a closing ) on Line 7.  Note
that blank lines are counted.
Line 11 also has a tab added.  Hope that helps...and I hope my
formatting survives.




 #!/usr/bin/env python


import time
import os

not_executed = 1

while (not_executed):
   dt = list(time.localtime(time.time()))
   hour = dt[3]
   minute = dt[4]
   if hour == 22 and minute == 58:
        os.spawnv (os.P_WAIT, "/usr/bin/mpg123", ["mpg123", "/home/mp3/Abba/Gold/queen.mp3"] )
        not_executed = 0



If you want something more generic, to be called passing parameters,
such as, "alarm.py 23 15"

#!/usr/bin/env python

import time
import os
import sys

def alarm (h, m):
  while (True):
     dt = list(time.localtime(time.time()))
     hour = dt[3]
     minute = dt[4]
     if hour == h and minute == m:
        os.spawnv (os.P_WAIT, "/usr/bin/mpg123", ["mpg123", "/home/mp3/Abba/Gold/queen.mp3"] )
        break

def main(argv=None):
    if argv is None:
       argv = sys.argv

    if len(argv) < 3:
       print "Two arguments are needed."
       return 1
    else:
       if not (argv[1].isdigit() and argv[2].isdigit()):
          print "An hour and minute are expected."
          return 1

    alarm(int(argv[1]),int(argv[2]))

    return 0

if __name__=="__main__":
    sys.exit(main())


--
Paulo Roma Cavalcanti
LCG - UFRJ

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]