Изменить текущий рабочий каталог в командной строке, используя python - PullRequest
2 голосов
/ 01 апреля 2012

Я пытаюсь написать скрипт на python, который изменит мой cwd на нужный каталог.Я не смог выполнить эту задачу напрямую из python, поэтому я написал для этого простой batch скрипт.

Changedir.bat

@echo off
chdir /D F:\cygwin\home\

Если я выполню вышеуказанный скрипт прямо вмой cmd работает нормально, но если я пытаюсь выполнить его с помощью скрипта Python, ничего не происходит.Мой cwd остается прежним.

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)

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

Конечно, это не может работать, потому что subprocess.call порождает совершенно новый процесс для вашего скрипта. Это выполняет сценарий в совершенно отдельной среде.

3 голосов
/ 01 апреля 2012

Если вы хотите изменить каталог в командной строке, вы должны использовать либо cd, либо сценарий .bat.

Вы не можете заставить другой процесс (например, Python) сделать это, потому что измененияв текущий каталог, сделанные в другом процессе, не отражаются обратно в родительский процесс.Причина того, что скрипт .bat работает, заключается в том, что он обрабатывается командной оболочкой, которая его вызывает, а не дочерним процессом.

...