python: изменить рабочий каталог скриптов на собственный каталог скрипта

144
задан Adam Matan 16 September 2009 в 13:41
поделиться

2 ответа

Это изменит ваш текущий рабочий каталог на так, чтобы открывающиеся относительные пути работали:

import os
os.chdir("/home/udi/foo")

Однако вы спросили, как перейти в каталог, в котором находится ваш скрипт Python, даже если вы этого не сделаете. Я не знаю, какой это каталог, когда вы пишете свой скрипт. Для этого вы можете использовать функции os.path :

import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)

Это принимает имя файла вашего скрипта, преобразует его в абсолютный путь, затем извлекает каталог этого пути, а затем переходит в этот каталог .

185
ответ дан 23 November 2019 в 22:06
поделиться

Не делайте этого.

Ваши сценарии и ваши данные не должны быть помещены в один большой каталог. Поместите свой код в известное место ( site-packages или / var / opt / udi или что-то в этом роде) отдельно от ваших данных. Используйте хороший контроль версий в своем коде, чтобы быть уверенным, что текущая и предыдущая версии отделены друг от друга, чтобы вы могли вернуться к предыдущим версиям и протестировать будущие версии.

Итог: не смешивайте код и данные.

Данные бесценны. Код приходит и уходит.

Укажите рабочий каталог в качестве значения аргумента командной строки. Вы можете указать значение по умолчанию в качестве переменной среды. Не делайте выводов (и не догадывайтесь)

Сделайте это обязательным значением аргумента и сделайте это.

import sys
import os
working= os.environ.get("WORKING_DIRECTORY","/some/default")
if len(sys.argv) > 1: working = sys.argv[1]
os.chdir( working )

Не «предполагайте» каталог, основанный на расположении вашего программного обеспечения. В долгосрочной перспективе это не сработает.

22
ответ дан 23 November 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: