windows - Skift nuværende arbejdsmappe i kommandoprompten ved hjælp af python

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive et python script, der vil ændre min cwd til den ønskede mappe. Jeg kunne ikke gøre denne opgave direkte fra python, så jeg skrev et simpelt batch script til at gøre det.


Changedir.bat


@echo off
chdir /D F:cygwinhome


Hvis jeg udfører ovenstående script direkte i min cmd fungerer det fint, men hvis jeg forsøger at udføre det med et python script, sker der ingenting. Min cwd forbliver ens.


PythonScript.py


import shlex,subprocess

change\_dir = r'cmd.exe /c C:\Users\test.bat'
command\_change = shlex.split(change\_dir)
subprocess.call(command\_change)

Bedste reference


Hvis du vil ændre mappe i kommandoprompten, skal du bruge enten cd eller et .bat script.


Du kan ikke få en anden proces (dvs. Python) for at gøre det, fordi ændringer i den aktuelle mappe, der er lavet i en anden proces, ikke reflekteres tilbage til overordnet proces. Årsagen til, at .bat scriptet virker, er at det behandles af kommandoen shell, der påberåber det snarere end ved en børneproces.

Andre referencer 1


Selvfølgelig kan det ikke fungere, fordi subprocess.call gyder helt ny proces til dit script. Dette udfører scriptet i et helt separat miljø.