Python Guru needed

Paulo Cavalcanti promac at gmail.com
Thu Jan 8 01:44:42 UTC 2009


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

>
>
> On Wed, Jan 7, 2009 at 10:52 PM, Jim <mickeyboa at sbcglobal.net> wrote:
>
>> Ed Greshko wrote:
>>
>>> Jim wrote:
>>>
>>>
>>>> Arthur Pemberton wrote:
>>>>
>>>>
>>>>> On Wed, Jan 7, 2009 at 5:18 PM, Arthur Pemberton <pemboa at gmail.com>
>>>>> wrote:
>>>>>
>>>>>
>>>>>> On Wed, Jan 7, 2009 at 5:06 PM, Jim <mickeyboa at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/fedora-list/attachments/20090107/33bde615/attachment-0001.htm>


More information about the fedora-list mailing list