windows - Sådan lanceres et program med mange argumenter i Python/Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Følgende kode fungerer fint i Windows:


subprocess.Popen([PATH\_TO\_G++]/g++ file.cpp -o file.exe)


Men i Linux får jeg følgende fejl:



  OSError: [[Errno 2]] Ingen sådan fil eller mappe



Efter at have læst dokumentationen og flere SO-tråde, fandt jeg ud af, at subprocess.Popen virker forskelligt i Windows og Nix-systemer. I Windows tager det strengen som parameter og lancerer den ligesom du 'd lancerer den i terminal.


I linux kræver det dog en liste over strenge, hvis du har parametre. Den første værdi er selve programmet, og derefter gå til attributterne. Du kan få det til at opføre sig som Windows ved at overføre Shell=True-argumentet, men det er ikke en god løsning for mig.


Jeg forsøgte shlex.split funktionen, men det virker stadig ikke.

Bedste reference


Baseret på dit eksempel skal du sørge for, at kommandoen er korrekt citeret:


subprocess.Popen([PATH\_TO\_G++ + "/g++", "file.cpp", "-o", "file.exe"])


Der er ingen måde PATH\_TO\_G ++ er et gyldigt variabelnavn, så jeg vil bare antage, at du gav det som et eksempel.


Nu, endnu vigtigere, hvad forsøger du at gøre med delprocessen? Bare lancere den og få den til at fungere som den primære operation? Start det og fange output? Start det i baggrunden?


Dokumentationen til delprocessemodulet er ret klar og giver mange eksempler på, hvordan du kan bruge det. [3] [4]