python - Running scripts, hvis formål er at ændre shell variabler med subprocess.popen

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en række scripts, jeg automatiserer kaldelsen i python med subprocess.Popen. Grundlæggende kalder jeg script A, derefter script B, derefter script C og så videre.


Script A indstiller en masse lokale skalvariabler med kommandoer som set SOME\_VARIABLE=SCRIPT\_A, set PATH=\%SCRIPT\_A:/=;\%PATH\%.


Script B og C skal derefter have virkningerne af dette. I unix vil du kalde script A med 'source script\_a.sh'. Effekten varer i det nuværende kommandovindue. Men subprocess.Popen lancerer effektivt et nyt vindue (slags).


Tilsyneladende subprocess.Popen er ikke kommandoen, jeg vil gøre dette. Hvordan ville jeg gøre det?


edit Jeg har forsøgt at analysere filen (som er alle 'sæt' sætninger) og overfører dem som en ordbog til 'env' i subprocess.Popen, men det synes ikke at have arbejdet.

Bedste reference


Du kan bruge argumentet env til Popen med en pythonordbog, der indeholder variablerne, så du behøver ikke at køre kommandoen, der bare angiver variabler. [10]

Andre referencer 1


hvis 'script A' bliver genereret af en anden proces, skal du enten ændre den anden proces, så outputfilen er i et format, som du kan kilde (import) til dit python script. eller skriv en parser i python, der kan fordøje freshen ud af 'Script A', der indstiller dem i dit python script.

Andre referencer 2


Hvis alt du ønsker, er at kalde en række batch-filer ved hjælp af Python, kan du oprette en hjælperbatchfil, der ville kalde alle disse batchfiler som denne


call scriptA;
call scriptB;
call scriptC;


og kør denne hjælperbatchfil ved hjælp af subprocess.Popen