Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2013 13:50:46

kripton3000
Зарегистрирован: 2013-11-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить валидность имени дирректории

Задача: Необходимо проверить сгенерированный путь, манипуляции производятся в Linux, т.е. имена дирректорий генеряться только *nix'овые, windows'кие имена дирректорий не рассматриваются.

Функция генерации пути:

def create_local_dir(init_local_path=None, path_customer=None, path_action=None, when=None):
        local_dir = ""
        path_datetime = datetime.now().strftime("%Y_%m_%d")
        if not init_local_path:
            init_local_path = "temp"
        else:
            if not path_customer:
                path_customer = "none_customer"
            else:
                if not path_action:
                    path_action = "none_action"
                else:
                    if not when:
                        local_dir = "/" + init_local_path + "/" + path_customer + "/" + path_action + "/"
                    else:
                        local_dir = "/" + init_local_path + "/" + path_customer + "/" + path_action + "/" + path_datetime + "/"
        return str(local_dir)


Если есть стандартные функции библиотеки ткните носом, не хотелось бы городить собственный велосипед.
Конкретно нужно проверить является ли сгенерированный путь валидным для Linux системы, если не является вернуть False, если является вернуть путь. Всё делается, чтобы не получить путь вида “/tmp/*&^%&///”, естественна такую дирректорию будет невозможно создать.

Отредактировано kripton3000 (Ноя. 15, 2013 13:54:09)

Офлайн

#2 Ноя. 15, 2013 14:10:53

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Проверить валидность имени дирректории

kripton3000
else:
if not path_customer:

elif not path_customer:

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

Вот такой нету:

os.path.is_valid_path(path)

Надо самому писать


kripton3000
Всё делается, чтобы не получить путь вида “/tmp/*&^%&///”, естественна такую дирректорию будет невозможно создать.

Такую он не создаст, он создаст /tmp/*&^%&

В Linux имена файлов и каталогов могут быть длиной не более 256 символов, и могут содержать любые символы, кроме “ / ”.



Отредактировано Budulianin (Ноя. 15, 2013 14:40:14)

Офлайн

#3 Ноя. 15, 2013 16:28:04

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Проверить валидность имени дирректории

юзайте os.path.join

import os
a, b, c, d = '/', 'x', 'y', 'z'
print(os.path.join(a, b, c, d))
>>> /x/y/z

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version