Как получить текущий рабочий каталог с помощью python 3?
Когда я запускаю следующий script в IDLE
import os
print(os.getcwd())
Я получаю вывод как
D:\testtool
но когда я запускаюсь из приглашения cmd, я получаю
c:\Python33>python D:\testtool\current_dir.py
c:\Python33
Как получить тот же результат, который я получил с помощью IDLE?
Ответы
Ответ 1
Кажется, что IDLE изменяет текущую рабочую директорию на местоположение выполняемого script, тогда как при запуске script с использованием cmd этого не происходит, и он оставляет CWD как есть.
Чтобы изменить текущий рабочий каталог на тот, который содержит ваш script, вы можете использовать:
import os
os.chdir(os.path.dirname(__file__))
print(os.getcwd())
Переменная __file__
доступна только в том случае, если вы выполняете script из файла и содержит путь к файлу. Подробнее об этом здесь: Python __file__ атрибут абсолютный или относительный?
Ответ 2
Используя pathlib, вы можете получить папку, в которой находится текущий файл. __file__
- путь к файлу, из которого был загружен модуль. Ссылка: документы
import pathlib
current_dir = pathlib.Path(__file__).parent
current_file = pathlib.Path(__file__)
Документ ссылки: ссылка