2012-11-05 14 views
7

Mam ciąg znaków, który zawiera dane wejściowe użytkownika dla adresu katalogu w systemie Linux. Muszę sprawdzić, czy jest odpowiednio sformatowany i czy adres może być w Pythonie 2.6. Ważne jest, aby pamiętać, że nie jest to w bieżącym systemie, więc nie mogę sprawdzić, czy jest tam za pomocą os.path, ani nie mogę spróbować utworzyć katalogów, ponieważ funkcja będzie uruchamiana wiele razy.Sprawdź, czy łańcuch jest poprawnym formatem adresu ścieżka bezwzględna

Te struny zawsze będą absolutnymi ścieżkami, więc moją pierwszą myślą było znalezienie wiodącego cięcia. Od tego momentu zastanawiałem się, czy sprawdzić, czy reszta łańcucha zawiera tylko prawidłowe znaki i nie zawiera podwójnych ukośników. Wydaje się to trochę niezgrabne, jakieś inne pomysły?

+1

Pokaż nam coś. – alexvassel

+1

Linux [nazwy plików] (http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html) nie może zawierać '\ 0' lub'/'- to jedyne ograniczenie – SeanC

Odpowiedz

19

Pewnie kwestia została edytowana ponieważ pisząc to, ale:

Istnieje os.path.isabs (PATH) który powie, jeśli ścieżka jest absolutna, czy nie.

Powrót Prawda, jeśli ścieżka jest bezwzględną ścieżką. W systemie Unix oznacza to, że zaczyna się od ukośnika, w systemie Windows zaczyna się od (tylnego) ukośnika po odcięciu potencjalnej litery dysku.

+0

Należy pamiętać, że ta metoda nie sprawdź, czy ścieżka lub nazwa pliku istnieje, więc powinien być tym, co OP chce. –

+0

Zrobiłem to pytanie, pytając, czy zostało poprawnie sformatowane, co sprawdza ta odpowiedź. – rsegal

Powiązane problemy