Myślę, że nie widzę tu szerszego obrazu; ale w zasadzie nie mam pojęcia, dlaczego miałbyś używać os.path.join
zamiast zwykłej konkatenacji ciągów?
Używałem głównie VBScript, więc nie rozumiem sensu tej funkcji.
Myślę, że nie widzę tu szerszego obrazu; ale w zasadzie nie mam pojęcia, dlaczego miałbyś używać os.path.join
zamiast zwykłej konkatenacji ciągów?
Używałem głównie VBScript, więc nie rozumiem sensu tej funkcji.
Odpowiedzi:
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ę.
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.
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
?” :)
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 '\'
/
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.
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.