Problem with subprocess.call and windows schtasks

Chris Rebert clp2 at rebertia.com
Sun Nov 18 17:39:27 CET 2012


On Sun, Nov 18, 2012 at 5:48 AM, Tom Borkin <borkintom at gmail.com> wrote:
> Hi,
> I have this code:
>
> #!\Python27\python
>
> import subprocess
> #subprocess.call(['SchTasks /Create /SC ONCE /TN "My Tasks" /TR "C:/Program
> Files/Apache Group/Apache2/htdocs/ccc/run_alert.py" /ST 07:50'], shell=True)
> subprocess.call(['SchTasks /Create /SC ONCE /TN "test" /TR "run_alert.py"
> /ST 07:50'], shell=True)
> With either call, I get this error:
> C:\Program Files\Apache Group\Apache2\htdocs\ccc>cron_alert_activity.py
> The system cannot find the path specified.
>
> If I remove the ", shell=True" I get this:
> C:\Program Files\Apache Group\Apache2\htdocs\ccc>cron_alert_activity.py
>  C:\Program Files\Apache Group\Apache2\htdocs\ccc\cron_alert_activity.py,
> line 4, in <module>
>   subprocess.call(['SchTasks /Create /SC ONCE /TN "test" /TR "run_alert.py"
> /ST 07:50'])
>  File "C:\Python27\lib\subprocess.py", line 493, in call
>   return Popen(*popenargs, **kwargs).wait()
>  File "C:\Python27\lib\subprocess.py", line 679, in __init__ errread,
> errwrite)
>  File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
> startupinfo)
> WindowsError: [Error 2] The system cannot find the file specified
> The file exists in said directory. I can execute it from the cmd prompt.

Per the docs (http://docs.python.org/2/library/subprocess.html#frequently-used-arguments
):
"If passing a single string [as the `args` argument], either `shell`
must be True (see below) or else the string must simply name the
program to be executed **without specifying any arguments.**"
(emphasis mine)

> So I tried this:
> pgm = "SchTasks"
> args = ['/Create /SC ONCE /TN "test" /TR "run_alert.py" /ST 07:50']
> #args = ['/Create', '/SC ONCE', '/TN "test"', '/TR "run_alert.py"', '/ST
> 07:50']
> cmd = [pgm]
> cmd.extend(args)
> subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
> but got this error:
> ERROR: Invalid argument/option - <<the above argument>>
>
> If I use the other args list I get this error:
> ERROR: Invalid argument/option - '/SC ONCE'
> so apparently it liked the first argument.
>
> Please advise.

Your tokenization of your command is incorrect. Consult the Note box
in the docs regarding `args` tokenization, and apply it to your
command:
http://docs.python.org/2/library/subprocess.html#subprocess.Popen

The-docs-are-your-friend-ly Yours,
Chris


More information about the Python-list mailing list