os.execvp() is giving me trouble

2006-04-07 Thread Jonathan Crowell

Hi All,

Sorry if this is a newbie question.
 I promise I have RTFMed, though.

Here goes:

I'm trying to invoke an external program
from python.  The program is jar.exe, which is part of java.  The
following is the command I want to send:

jar -xvf file1.jar jile2.jar file3.jar

os.execvp(file, args) is described as follows:

execvp(file, args)
   Execute the executable file (which is searched for along $PATH)
   with argument list args, replacing the current process.
   args may be a list or tupe of strings.

I have a list of strings that looks like this:

jarfiles = ['c:\\documents and settings\\myname\\mydir\\file1.jar', 'c:\\documents
and settings\\myname\\mydir\\file2.jar', 'c:\\documents and settings\\myname\\mydir\\file3.jar']

The jar command takes some arguments.  I would like to give it the
arguments "-xvf".  I have tried both of the following options:

1) inserting "-xvf" as the first element in the list above and
then calling os.execvp("jar", jarfiles);

2) directly calling without the list, as in os.execlp("jar",
"-xvf", "c:\\documents and settings\\myname\\mydir\\file1.jar",
"c:\\documents and settings\\myname\\mydir\\file2.jar", "c:\\documents
and settings\\myname\\mydir\\file3.jar");

Neither of these options seems to work.  The output looks like the
following:

C:\Documents and Settings\mydir\pythonscripts>Illegal option: :
Usage: jar {ctxu}[vfm0Mi] [jar-file] [manifest-file] [-C dir] files 
   (more usage output here...)

If anyone knows how I can invoke a
command and pass it a list of arguments, that would be helpful.

By the way, I know that the pathnames of my jar files have spaces in them,
so I have also tried enclosing them in double quotes by adding a double
quote to the begining and end of every element in my list of jar files.
 I still got a very similar error.  I also tried changing the
paths to relative paths that didn't contain spaces and I still got a very
similar error.

Thanks,

Jon


-- complete source -
import os;
import glob;

# define some useful directories we
will be using in this script.
home_dir = os.path.normcase(os.environ['USERPROFILE']);
dist_dir = os.path.normcase(home_dir+"/mydir/dist/");
other_dir = os.path.normcase(home_dir+"/otherDir/");
os.chdir(home_dir);

# get all the jar files in the mydir
distribution directory
jarfiles = glob.glob(dist_dir+"\\*.jar");

# delete every directory and file in
the otherDir directory
for root, dirs, files in os.walk(other_dir,
topdown=False):
    for name in files:
        os.remove(os.path.join(root,
name))
    for name in dirs:
        os.rmdir(os.path.join(root,
name))

# make the empty otherDir directory
the current working directory
os.chdir(other_dir);

# for each jar file, extract it into
the otherDir directory
for jarfile in jarfiles:
    os.execlp("jar",
"-xvf", jarfile);
-- end source --
(I also tried using execvp and a list
of arguments (all the jarfiles) but that didn't work either.)

--
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. -- 
http://mail.python.org/mailman/listinfo/python-list

calling the java jar utility from python

2006-04-07 Thread Jonathan Crowell

Hi.  I want to invoke the java
jar utility from my python script and pass it a couple of arguments.  Can
anyone tell me how to do this?

Thanks,

Jon

--
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. -- 
http://mail.python.org/mailman/listinfo/python-list