How do you execute external programs from Python?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Carl

    #1

    How do you execute external programs from Python?

    Hi,

    I have this little code snippet that I use for recording audio streams. My
    problem is that I want to schedule my recordings with crontab. This does
    not work, however. I cannot figure out why; my code works fine when run
    manually from the command prompt.

    On final thing: What would be the best way to turn off the recording?

    Can someone help me?

    Carl


    Here is my code:

    import time
    import os
    import shutil

    URL = "http://www.jazzandblue s.org/listen/links/kkjz1.ram"

    def RecordURL(what = "KKJZ"):
    str_mplayer = "mplayer -playlist " + URL
    str_mplayer += " -ao pcm -aofile "
    str_mplayer += what + ".wav" + " -vc dummy -vo null"
    os.system(str_m player)

    def CreateOGG(what = "KKJZ"):
    ogg_file = what + ".ogg"
    str_oggenc = "oggenc " + what + ".wav"
    os.system(str_o ggenc)

    def CreateMP3(what = "KKJZ"):
    mp3_file = what + ".mp3"
    str_lame = "lame " + what + ".wav " + mp3_file
    os.system(str_l ame)

    def DeleteWAV(what = "KKJZ"):
    wav_file = what + ".wav"
    str_rm = "rm " + wav_file
    os.system(str_r m)

    def DateTag(what = "KKJZ"):
    local_time = time.asctime(ti me.localtime())
    for local_file in [ what + ".ogg", what + ".mp3" ]:
    length = len(local_file)
    local_file_copy = local_file[: length - 4] + "_" + local_time + "."
    + local_file[length - 3 :]
    shutil.copy(loc al_file, local_file_copy )

    RecordURL()
    ## CreateOGG()
    ## CreateMP3()
    ## DeleteWAV()
    ## DateTag()

    Here is my crontab entry:

    30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
    import KKJZ"


  • Jean Brouwers

    #2
    Re: How do you execute external programs from Python?


    You did not mentions what specific part is not working under cron, so
    here is a guess.

    Maybe the PATH environment variable is not set correctly such that
    binaries like mplayer can not be found.

    Try using absolute path names for mplayer and any other files.

    /Jean Brouwers


    In article <iGppd.2045$3N5 .117@amstwist00 >, Carl
    <phleum_nospam@ chello.se> wrote:
    [color=blue]
    > Hi,
    >
    > I have this little code snippet that I use for recording audio streams. My
    > problem is that I want to schedule my recordings with crontab. This does
    > not work, however. I cannot figure out why; my code works fine when run
    > manually from the command prompt.
    >
    > On final thing: What would be the best way to turn off the recording?
    >
    > Can someone help me?
    >
    > Carl
    >
    >
    > Here is my code:
    >
    > import time
    > import os
    > import shutil
    >
    > URL = "http://www.jazzandblue s.org/listen/links/kkjz1.ram"
    >
    > def RecordURL(what = "KKJZ"):
    > str_mplayer = "mplayer -playlist " + URL
    > str_mplayer += " -ao pcm -aofile "
    > str_mplayer += what + ".wav" + " -vc dummy -vo null"
    > os.system(str_m player)
    >
    > def CreateOGG(what = "KKJZ"):
    > ogg_file = what + ".ogg"
    > str_oggenc = "oggenc " + what + ".wav"
    > os.system(str_o ggenc)
    >
    > def CreateMP3(what = "KKJZ"):
    > mp3_file = what + ".mp3"
    > str_lame = "lame " + what + ".wav " + mp3_file
    > os.system(str_l ame)
    >
    > def DeleteWAV(what = "KKJZ"):
    > wav_file = what + ".wav"
    > str_rm = "rm " + wav_file
    > os.system(str_r m)
    >
    > def DateTag(what = "KKJZ"):
    > local_time = time.asctime(ti me.localtime())
    > for local_file in [ what + ".ogg", what + ".mp3" ]:
    > length = len(local_file)
    > local_file_copy = local_file[: length - 4] + "_" + local_time + "."
    > + local_file[length - 3 :]
    > shutil.copy(loc al_file, local_file_copy )
    >
    > RecordURL()
    > ## CreateOGG()
    > ## CreateMP3()
    > ## DeleteWAV()
    > ## DateTag()
    >
    > Here is my crontab entry:
    >
    > 30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
    > import KKJZ"
    >
    >[/color]

    Comment

    • michael

      #3
      Re: How do you execute external programs from Python?

      > > Here is my crontab entry:[color=blue][color=green]
      > >
      > > 30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
      > > import KKJZ"[/color][/color]

      Hi,

      if cron is running as root say

      30 * * * * "su - user; script.sh"

      su - user means that .profile, .bash-profile etc is read. I think its
      an "Environmen tal" Problem

      Comment

      • Carl

        #4
        Re: How do you execute external programs from Python?

        Carl wrote:
        [color=blue]
        > Hi,
        >
        > I have this little code snippet that I use for recording audio streams. My
        > problem is that I want to schedule my recordings with crontab. This does
        > not work, however. I cannot figure out why; my code works fine when run
        > manually from the command prompt.
        >
        > On final thing: What would be the best way to turn off the recording?
        >
        > Can someone help me?
        >
        > Carl
        >
        >
        > Here is my code:
        >
        > import time
        > import os
        > import shutil
        >
        > URL = "http://www.jazzandblue s.org/listen/links/kkjz1.ram"
        >
        > def RecordURL(what = "KKJZ"):
        > str_mplayer = "mplayer -playlist " + URL
        > str_mplayer += " -ao pcm -aofile "
        > str_mplayer += what + ".wav" + " -vc dummy -vo null"
        > os.system(str_m player)
        >
        > def CreateOGG(what = "KKJZ"):
        > ogg_file = what + ".ogg"
        > str_oggenc = "oggenc " + what + ".wav"
        > os.system(str_o ggenc)
        >
        > def CreateMP3(what = "KKJZ"):
        > mp3_file = what + ".mp3"
        > str_lame = "lame " + what + ".wav " + mp3_file
        > os.system(str_l ame)
        >
        > def DeleteWAV(what = "KKJZ"):
        > wav_file = what + ".wav"
        > str_rm = "rm " + wav_file
        > os.system(str_r m)
        >
        > def DateTag(what = "KKJZ"):
        > local_time = time.asctime(ti me.localtime())
        > for local_file in [ what + ".ogg", what + ".mp3" ]:
        > length = len(local_file)
        > local_file_copy = local_file[: length - 4] + "_" + local_time +
        > "."
        > + local_file[length - 3 :]
        > shutil.copy(loc al_file, local_file_copy )
        >
        > RecordURL()
        > ## CreateOGG()
        > ## CreateMP3()
        > ## DeleteWAV()
        > ## DateTag()
        >
        > Here is my crontab entry:
        >
        > 30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
        > import KKJZ"[/color]

        Thanks guys!

        It was an environmental problem. It works now; the only thing I still
        haven't solved is how to kill the spawned process after say an hour. Any
        clues?

        Carl

        Comment

        • Paul Watson

          #5
          Re: How do you execute external programs from Python?

          "Carl" <phleum_nospam@ chello.se> wrote in message
          news:e_1qd.2176 $3N5.2001@amstw ist00...[color=blue]
          > Carl wrote:
          >
          > Thanks guys!
          >
          > It was an environmental problem. It works now; the only thing I still
          > haven't solved is how to kill the spawned process after say an hour. Any
          > clues?
          >
          > Carl[/color]

          Have you investigated... ?

          os.spawn*()
          os.P_NOWAIT
          os.kill()


          Comment

          Working...