Napisz manipulacje ścieżkami plików raz i działa na wielu różnych platformach za darmo. Znak ograniczający zostaje usunięty, co ułatwia pracę.
Mądry
Nie musisz się już martwić, czy ta ścieżka katalogu miała końcowy ukośnik, czy nie . os.path.joindoda go, jeśli zajdzie taka potrzeba.
Jasny
Używanie os.path.joinsprawia, że dla innych osób czytających Twój kod jest oczywiste, że pracujesz z ścieżkami plików. Ludzie mogą szybko przeskanować kod i odkryć, że jest to wewnętrzna ścieżka do pliku. Jeśli zdecydujesz się zbudować go samodzielnie, prawdopodobnie odciągniesz czytelnika od znalezienia rzeczywistych problemów z twoim kodem: „Hmm, jakieś konkrety ciągów znaków, zamiana. Czy to jest ścieżka do pliku, czy co? Ach! Dlaczego nie użył os.path.join?” :)
Dzięki. Części Smart i Clear są dokładnie tym rodzajem rozumowania, jakiego szukałem, zadając sobie to samo pytanie: część przenośną można łatwo uzyskać przez połączenie z "/" zamiast tylko "\" z oknami, więc jest to trochę dyskusyjne.
Léo Germond
3
punkt 3 ma wartość, ale 1 i 2 są dyskusyjne. / działa w systemie Windows. Jakiego systemu operacyjnego używasz, a który go nie obsługuje? A podwójne ukośniki na końcu są normalizowane przez system operacyjny / FS. Nie mówię, nie używaj os.path.join, ale jeśli to zrobisz, zrób to z właściwych powodów. Wokół os.path.join jest dużo kultywowania ładunków. „Głupia konsekwencja to hobgoblin małych umysłów”, jak mówią.
hraban
5
Będzie działać na Windows z '\' i Unix (w tym Mac OS X) z '/'.
dla posixpath oto prosty kod
In [22]: os.path.join??
Type: function
String Form:<function join at 0x107c28ed8>
File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
defjoin(a, *p):"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == ''or path.endswith('/'):
path += b
else:
path += '/' + b
return path
O dziwo jednak, używanie /działa w systemie Windows z CPythonem…
Eric O Lebigot,
1
To. Dlaczego miałbyś próbować samodzielnie zajmować się separatorami ścieżek itp., Skoro istnieje funkcja zaprojektowana, aby zrobić to za Ciebie?
Blair,
1
Czytam komentarze i łączy to ze sobą ścieżki, po prostu nie rozumiem, dlaczego miałbym go kiedykolwiek używać, przepraszam, jak powiedziałem, wyraźnie nie widzę szerszego obrazu.
user1905410
@ user1905410 Robi więcej niż to, co obejmuje Dokumentacja Fine.
@ user1905410 Robi więcej niż to, czego wymaga Dokumentacja Fine.
0
Jest niezależny od systemu operacyjnego. Jeśli na stałe zakodujesz swoje ścieżki jako C: \ Cokolwiek, będą działać tylko w systemie Windows. Jeśli zakodujesz je na stałe w standardzie Uniksa "/", będą działać tylko na Uniksie. os.path.join wykrywa system operacyjny, w którym działa, i łączy ścieżki przy użyciu odpowiedniego symbolu.
If you hardcode them with the Unix standard "/" they will only work on Unix.To jest złe. „/” działa dobrze w systemie Windows ORAZ linux / unix / bsd / darwin.
Odpowiedzi:
Przenośny
Napisz manipulacje ścieżkami plików raz i działa na wielu różnych platformach za darmo. Znak ograniczający zostaje usunięty, co ułatwia pracę.
Mądry
Nie musisz się już martwić, czy ta ścieżka katalogu miała końcowy ukośnik, czy nie .
os.path.join
doda go, jeśli zajdzie taka potrzeba.Jasny
Używanie
os.path.join
sprawia, że dla innych osób czytających Twój kod jest oczywiste, że pracujesz z ścieżkami plików. Ludzie mogą szybko przeskanować kod i odkryć, że jest to wewnętrzna ścieżka do pliku. Jeśli zdecydujesz się zbudować go samodzielnie, prawdopodobnie odciągniesz czytelnika od znalezienia rzeczywistych problemów z twoim kodem: „Hmm, jakieś konkrety ciągów znaków, zamiana. Czy to jest ścieżka do pliku, czy co? Ach! Dlaczego nie użyłos.path.join
?” :)źródło
os.path.join
, ale jeśli to zrobisz, zrób to z właściwych powodów. Wokół os.path.join jest dużo kultywowania ładunków. „Głupia konsekwencja to hobgoblin małych umysłów”, jak mówią.Będzie działać na Windows z '\' i Unix (w tym Mac OS X) z '/'.
dla posixpath oto prosty kod
In [22]: os.path.join?? Type: function String Form:<function join at 0x107c28ed8> File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py Definition: os.path.join(a, *p) Source: def join(a, *p): """Join two or more pathname components, inserting '/' as needed. If any component is an absolute path, all previous path components will be discarded.""" path = a for b in p: if b.startswith('/'): path = b elif path == '' or path.endswith('/'): path += b else: path += '/' + b return path
nie ma okien, ale powinno tam być to samo z '\'
źródło
/
działa w systemie Windows z CPythonem…Jest niezależny od systemu operacyjnego. Jeśli na stałe zakodujesz swoje ścieżki jako C: \ Cokolwiek, będą działać tylko w systemie Windows. Jeśli zakodujesz je na stałe w standardzie Uniksa "/", będą działać tylko na Uniksie. os.path.join wykrywa system operacyjny, w którym działa, i łączy ścieżki przy użyciu odpowiedniego symbolu.
źródło
If you hardcode them with the Unix standard "/" they will only work on Unix.
To jest złe. „/” działa dobrze w systemie Windows ORAZ linux / unix / bsd / darwin.