Find the current directory and file's directory [duplicate]
Найдите текущий каталог и директорию файла [дубликат]
Как мне определить:
текущий каталог (где я был в командной оболочке, когда запускал скрипт Python) и
где находится файл Python, который я выполняю?
Переведено автоматически
Ответ 1
Чтобы получить полный путь к каталогу, в котором содержится файл Python, напишите это в этом файле:
import os dir_path = os.path.dirname(os.path.realpath(__file__))
(Обратите внимание, что приведенное выше заклинание не сработает, если вы уже использовали его os.chdir() для изменения текущего рабочего каталога, поскольку значение __file__ константы относится к текущему рабочему каталогу и не изменяется os.chdir() вызовом.)
Чтобы получить текущий рабочий каталог, используйте
import os cwd = os.getcwd()
Ссылки на документацию для модулей, констант и функций, использованных выше:
Пожалуйста, обратите внимание, что Path.cwd(), Path.resolve() и другие Path методы возвращают объекты path (PosixPath в моем случае), а не строки. В Python 3.4 и 3.5 это вызвало некоторую боль, потому что open встроенная функция могла работать только со строковыми или байтовыми объектами и не поддерживала Path объекты, поэтому вам пришлось преобразовать Path объекты в строки или использовать Path.open() метод, но последний вариант потребовал от вас изменения старого кода:
Файл scripts/2.py
from pathlib import Path
p = Path(__file__).resolve()
with p.open() as f: pass withopen(str(p)) as f: pass withopen(p) as f: pass
print('OK')
Вывод
python3.5 scripts/2.py
Traceback (most recent call last): File "scripts/2.py", line 11, in <module> with open(p) as f: TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')
Как вы можете видеть, open(p) не работает с Python 3.5.