Comment puis-je appeler une commande unix telle que df -Ph | awk 'NR>=2 {print $6","$5","$4}'
df -Ph | awk 'NR>=2 {print $6","$5","$4}'
utilisant un sous-processus. Serait-il judicieux d’utiliser shlex.split ici?
Merci pour toute aide ici.
Vous utilisez un tuyau, il doit donc fonctionner dans le shell. Il suffit donc d’utiliser la forme de chaîne et assurez-vous de spécifier shell=True
. En ce qui concerne la citation, il est plus facile d’utiliser une citation sortingple ici:
cmd = """df -Ph | awk 'NR>=2 {print $6","$5","$4}'"""
Il suffit que le subprocess
– subprocess
passe à un shell en définissant shell=True
:
subprocess.call('''df -Ph | awk 'NR>=2 {print $6","$5","$4}'''', shell=True)
Bonjour, vous pouvez aussi faire comme ça. N’oubliez pas d’importer le sous-processus
import subprocess def linuxOperation(): p = subprocess.Popen(["df","-Ph"], stdout=subprocess.PIPE) p2 = subprocess.Popen(["awk",'NR>=2 {print $6","$5","$4}'], stdin=p.stdout, stdout=subprocess.PIPE, universal_newlines=True) p.stdout.close() out,err = p2.communicate() print(out) linuxOperation()