Napisałem kod w Pythonie, który używa / do utworzenia określonego pliku w folderze, jeśli chcę użyć kodu w systemie Windows, to nie zadziała, czy istnieje sposób, dzięki któremu mogę użyć kodu w systemie Windows i Linux.
W python używam tego kodu:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Kiedy użyję mojego kodu w przypuszczeniu, że komputer z systemem Windows mój kod nie będzie działać.
Jak korzystać z „/” (separatora katalogów) w systemie Linux i Windows?
/
ścieżki katalogów. Jaki masz konkretny problem? Opublikuj kod ilustrujący problem.Odpowiedzi:
Zastosowanie
os.path.join()
. Przykład:os.path.join(pathfile,"output","log.txt")
.W twoim kodzie byłoby to:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
źródło
os.path.join
używa bardziej złożonej logiki, aby dopasować kilka względnych komponentów ścieżki razem. Gdy chcesz je po prostu połączyć,os.sep.join
jest właściwym wyborem.Posługiwać się:
aby zobaczyć, jak wygląda separator w bieżącym systemie operacyjnym.
W swoim kodzie możesz użyć:
źródło
Możesz użyć os.sep :
źródło
os.path.normpath(pathname)
należy również wspomnieć, ponieważ konwertuje/
separatory ścieżek na\
separatory w systemie Windows. Wali również zbędne odnośniki uplevel ... IE,A/B
aA/foo/../B
iA/./B
wszystko staćA/B
. A jeśli jesteś Windows, wszystkie one stają sięA\B
.źródło
os.path.normpath('a/b/c/d/file.ext')
niżos.path.join('a','b','c','d','file.ext')
wtedy, gdy muszę określić długą ścieżkę.os.path.join
po prostu dołącza do wszystkiego. np.join("a/b", "c\d")
dajea/b\c\d
(w systemie Windows). Ale mogę uzyskać oczekiwany wynik z właściwą kombinacjęjoin
inormpath
, na przykłada\b\c\d
(w systemie Windows)Jeśli masz szczęście, że korzystasz z Python 3.4+, możesz użyć
pathlib
:lub równoważnie
źródło
Kilka przydatnych linków, które pomogą Ci:
źródło
sep
ale też nie mogłem się oprzeć, aby to opublikować (założyłem, że OP uzna to za przydatne do przyszłych prac) :)Zrób
import os
a następnie użyjos.sep
źródło
źródło
Nie twórz własnych nazw katalogów i plików, używaj bibliotek dołączonych do Pythona.
W tym przypadku odpowiednią jest os.path . Zwłaszcza łączyć, która tworzy nową nazwę ścieżki z katalogu i nazwę pliku lub katalogu i podział, który pobiera nazwę pliku z pełnej ścieżki.
Twój przykład byłby
źródło