Using shlex, I now have this: #!\Python27\python import os, subprocess path = os.path.join("C:\\", "Program Files", "Apache Group", "Apache2", "htdocs", "ccc", "run_alert.py") #subprocess.call(['SchTasks', '/Create', '/SC', 'ONCE', '/TN', '"test"', '/TR', path, '/ST', '23:50']) subprocess.call(['SchTasks', '/Create', '/SC', 'ONCE', '/TN', '"test"', '/TR', 'run_alert.py', '/ST', '23:50']) Both of the above commands throw the same error: ERROR: The filename, directory name or volume label syntax is incorrect.
Pls advise. TIA, Tom On Sun, Nov 18, 2012 at 12:39 PM, Chris Rebert <c...@rebertia.com> wrote: > On Sun, Nov 18, 2012 at 5:48 AM, Tom Borkin <borkin...@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 >
-- http://mail.python.org/mailman/listinfo/python-list