Почему я не могу изменить текущий рабочий каталог?

Я пытаюсь создать свою первую программу на Python, которая удаляет все пустые каталоги в d:\source. Похоже, я даже не могу войти в каталог с моими текущими навыками:

import os
os.getcwd()
os.chdir("D:\\SOURCE")
os.getcwd()

Все, что я получаю, это...

D:\CODING\venv\Scripts\python.exe D:/CODING/tester.py

Process finished with exit code 0

Кажется, рабочий каталог не изменился, как мне это проверить? Почему он вообще не отображает результаты/ошибки для os.chdir("D:\\SOURCE") или второй os.getcwd() команды?

Ни одна из этих команд ничего не выводит. попробуй: print(os.getcwd())

Stephen Rauch 02.05.2019 15:32

Закрытие как не репро.

Aran-Fey 02.05.2019 15:35

Он не изменит рабочий каталог вашей оболочки, если это то, что вы ожидали. Только рабочий каталог впоследствии в вашем скрипте (как вы должны увидеть, если распечатаете его).

khelwood 02.05.2019 15:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
951
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно распечатать результат.

import os
print(os.getcwd())
os.chdir("D:\\SOURCE")
print(os.getcwd())
Ответ принят как подходящий

Скорее всего, ваша программа действительно меняет каталог. Но вы не можете видеть это:

  • Простой os.getcwd() не сделает ничего видимого: он извлекает текущий рабочий каталог и отбрасывает его. Вместо этого вы должны сделать print(os.getcwd())
  • Изменение текущего рабочего каталога влияет только на текущий процесс (то есть на программу Python), но не на его родителя (командную строку). Таким образом, ваша командная строка сохраняет свой cwd и не наследует его от вызываемой программы.

Как будет выглядеть os.chdir("D:\\SOURCE") с дополнительной защитой? Например, если смена каталога не удалась, не продолжайте.

Bricktop 03.09.2019 21:23

@Bricktop Давайте попробуем: >>> os.chdir("doesn't exist") приводит к исключению OSError: [Errno 2] No such file or directory: "doesn't exist". Итак, вы окружаете его try: и except OSError, e: и проверяете свойства e.

glglgl 03.09.2019 22:44

Я понимаю все, кроме части свойств e: и e, но у меня есть условия для работы. Можно ли просто запустить окно выбора каталога для отсутствующего каталога?

Bricktop 04.09.2019 08:03

@Bricktop Ну, по сути, это базовый Обработка исключений, который вам нужно поискать. Конечно, можно запустить диалоговое окно выбора: см. здесь.

glglgl 04.09.2019 09:42

os.chdir() не возвращает никакого значения. Он просто изменит каталог. Как было предложено в других ответах, вы можете распечатать/вывести текущий каталог, используя

os.chdir("D:\\SOURCE") 
print(os.getcwd())

Другие вопросы по теме