2017-08-28 1 views
0

Je veux juste exécuter la commande rm /tmp/*.idx à partir d'un script python. J'ai lu que os.system est dépréciée (IL EST PAS, voir les commentaires), donc je suis en train de Popen ce qui suit:Exécuter une commande Linux en Python avec des caractères spéciaux

proc = subprocess.Popen(shlex.split('rm /tmp/*.idx')) 
proc.communicate() 

après bien sûr l'importation shlex et subprocess, mais il ne supprime pas les fichiers .

Merci.

+1

'subprocess.check_call ('rm /tmp/*.idx', shell = True)' – jordanm

+1

Où avez-vous lu 'os.system()' serait dépréciée? La documentation ne semble pas le dire. – Tomalak

+1

Vous pouvez le faire sans le shell en utilisant: 'subprocess.check_call (['rm'] + glob.glob ('/ tmp/*. Idx'))' – jordanm

Répondre

2

Les modèles glob sont une syntaxe shell. Alors:

subprocess.Popen("rm /tmp/*.idx", shell=True) 
+0

Merci, je suppose que le 'shlex.split' n'est pas nécessaire dans ce cas, ai-je raison? – David

+0

à droite. 'Popen()' l'exécutera comme '/ bin/sh -c" rm/tmp/*. Idx "'. – pynexj