[python] python subprocess vraci porad 1

Jan Jakubuv cbboy na matfyz.cz
Čtvrtek Leden 21 11:52:49 CET 2010


zdravim,

On Thu, Jan 21, 2010 at 09:44:55AM +0100, Tomas Pelka wrote:
> Dobry napad, predelal sem tedy na:
> 
> --------------------------------------------------
> cmd = "/usr/bin/locate"
> arg1 = " -i"
> arg2 = " -d /var/www/books/mlocate.db"
> arg3 = str(" " + pattern)
> 

Chyba je formatu argumentu arg1, atd.  Ta mezera na zacatku tam nesmi byt.
Zkuste:

arg1 = "-i"
arg2a = "-d" 
arg2a = "/var/www/books/mlocate.db"
arg3 = str(pattern)

p1 = subprocess.Popen([cmd, arg1, arg2a, arg2b, arg3], shell=False, ...)

Zbytek uz je spravne, pokud argumenty predavate jako list pak je skutecne
treba zadat je oddelene.

Pokud chcete zadat prikaz jako jeden string pak pouzijte `shell=True` a
namistu listu zadejte string:

p1 = subprocess.Popen("/usr/bin/locate -i -d file pattern", shell=True, ...)

> (stdoutdata, stderrdata) = p1.communicate()
> 
> print p1.returncode
> print "%s -- %s" % (stdoutdata, stderrdata)
> --------------------------------------------------
> 
> Ale stale vraci 1 a zadny vysledek.
> 

honza.



-- 
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.



Další informace o konferenci Python