Каковы хорошие способы задать путь в Python-скрипте, поддерживаемом несколькими операционными системами? - PullRequest
5 голосов
/ 09 мая 2009

При написании сценария Python, который может быть выполнен в разных операционных средах (Windows / * nix), какие есть хорошие способы задать путь? В приведенном ниже примере я хотел бы, чтобы файлы журналов хранились в папке журналов в текущем каталоге. Это приемлемый подход (я довольно плохо знаком с Python) или есть лучшие способы для достижения этого? Спасибо

if os.name == 'nt':
    logdir=('%s\\logs\\') % (os.getcwd())
else:
    logdir=('%s/logs/') % (os.getcwd())

logging.basicConfig(level=logging.INFO,
    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
    datefmt='%m-%d-%y %H:%M:%S',
    filename='%slogfile.log' % (logdir),
    filemode='a')

Ответы [ 2 ]

8 голосов
/ 09 мая 2009

Определенно посмотрите на os.path. Он содержит множество «безопасных» функций манипулирования путями между операционными системами, которые вам необходимы. Например, я всегда делал это в описываемом вами сценарии:

os.path.join(os.path.abspath(os.path.dirname(__file__)), 'logs')

Также обратите внимание, что если вы хотите получить разделитель пути, вы можете использовать:

os.path.sep

Это приведет к '\\' в Windows и '/' в Linux, например.

2 голосов
/ 09 мая 2009

Во-первых, всегда используйте os.path для манипулирования путями.

Что еще более важно, все пути должны быть указаны в файлах конфигурации.

Для ведения журнала используйте функцию fileConfig .

Для всего остального убедитесь, что у вас есть файл конфигурации, параметр командной строки или переменная среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...