[Python] Escape stringa con char speciali

Daniele Varrazzo piro a develer.com
Mer 12 Mar 2014 17:49:30 CET


On 2014-03-12 15:23, Fabrizio Soppelsa wrote:
> Ciao scusate la domanda idiota ma qualcosa non mi torna.
> Il mio obiettivo e' eseguire un comando di sistema concatenandolo a 
> una
> stringa PASSWORD che in questo caso contiene caratteri strani ma il
> comando, che esegue una query MySQL, per qualche motivo si spezza.
> Non riesco a trovare un metodo di escape che mi consenta di eseguirlo
> senza errori, ho provato anche con la stringa raw.
>
> def statistics():
>         # ...
>         PASSWORD=r'pass&wo$rd'
>
>         try:
>                #...
>                s = commands.getoutput('mysql ' + DATABASE + ' -uroot 
> -p'
> + PASSWORD + ' -e "'+ QUERY + '"')
>
> Ogni suggerimento ben accetto :)

Usa il modulo subprocess, con shell=false e passando gli argomenti in 
una lista anziché concatenarli in una stringa.

Come hai fatto tu basta ci sia uno spazio nella password e hai un 
problema. Se invochi una shell un & metterebbe il processo in 
background, un # verrebbe preso per commento ecc.


-- Daniele



Maggiori informazioni sulla lista Python