windows - Open Git Bash shell ved hjælp af et python script og derefter køre et shell script i git bash shell

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at åbne Git Bash shell (C: \ Program Files \ Git \ git-bash.exe) ved hjælp af et python script og derefter køre et shell script (for eksempel basicSc.sh) i git bash shell. Jeg kører python scriptet i Windows. Hvordan kan jeg gøre det med succes? Også hvordan kan jeg vide, at * .sh scriptet er afsluttet fra python scriptet? Hvordan kan jeg videresende nogle parametre til * .sh script fra python script? Jeg kører python 3.6.3.


Python script (kører fra Windows kommandoprompt):


import subprocess

p = subprocess.Popen
(
"C:Program FilesGitgit-bash.exe --l -- C:/Users/userName/Documents/dev/basicSc.sh", 
bufsize=-1, 
executable=None, 
stdin=None, 
stdout=None, 
stderr=None, 
preexec\_fn=None, 
close\_fds=True, 
shell=False, 
cwd="C:/Users/userName/Documents/dev", 
)


Alternativt, hvis jeg gør det følgende, kan jeg køre * .sh script manuelt. Jeg forsøger at automatisere dette fuldt ud. Hvis dette er den eneste mulige løsning, hvordan kommunikerer jeg enden af ​​* .sh scriptet til python scriptet?


import subprocess

p = subprocess.Popen("C:Program FilesGitgit-bash.exe", 
bufsize=-1, 
executable=None, 
stdin=None, 
stdout=None, 
stderr=None, 
preexec\_fn=None, 
close\_fds=True, 
shell=False, 
cwd="C:/Users/userName/Documents/dev", 
)

Bedste reference


Årsag Popen accepterer liste over argumenter, så det skal se ud som følger


import subprocess
p = subprocess.Popen(["C:Program FilesGitgit-bash.exe","C:/Users/userName/Documents/dev/basicSc.sh"], 
                     bufsize=-1, 
                     executable=None, 
                     stdin=None, 
                     stdout=None, 
                     stderr=None, 
                     preexec\_fn=None, 
                     close\_fds=True, 
                     shell=False, 
                     cwd="C:/Users/userName/Documents/dev", 
                     )

Andre referencer 1


brug p.wait () for at sikre, at dit script løber succesfuldt ..... Men en anden måde kan være at fange alle fremskridt i script til enhver loggerfil, så kontroller, om det gør hvad det skal gøre eller ej .. .....
Du kan også bruge CHECK\_OUTPUT, fordi den returnerer returkode, som kan bruges til at hævde, om dit script har kørt succes eller ej .... Hold det her i Prøv-Undtagen at fange for at tage undtagelse