Odpowiedzi:
zawsze możesz użyć:
'C:/mydir'
działa to zarówno w systemie Linux, jak i Windows. Jest inna możliwość
'C:\\mydir'
jeśli masz problemy z niektórymi nazwami, możesz również wypróbować surowe literały łańcuchowe:
r'C:\mydir'
jednak najlepszą praktyką jest użycie os.path
funkcji modułu, które zawsze wybierają poprawną konfigurację dla twojego systemu operacyjnego:
os.path.join(mydir, myfile)
Od Pythona 3.4 możesz również użyć modułu pathlib . Jest to równoważne powyższemu:
pathlib.Path(mydir, myfile)
lub
pathlib.Path(mydir) / myfile
Skorzystaj z os.path
modułu.
os.path.join( "C:", "meshes", "as" )
Lub użyj surowych ciągów
r"C:\meshes\as"
Zalecałbym również brak spacji w ścieżce lub nazwach plików. I możesz użyć podwójnych odwrotnych ukośników w swoich strunach.
"C:\\meshes\\as.jpg"
"C:\"
jako pierwszy wpis? Czy to psuje trochę czystości użytkowania join
?
"C:\"
w środku nazwy pliku. Poza tym możesz użyć os.path.normpath
przed lub po złączeniu, aby upewnić się, że ścieżka zostanie ładnie wydrukowana.
os.path.join( "C:\\", "meshes", "as" )
Tak, \
w literałach łańcuchowych Pythona oznacza początek sekwencji ucieczki. Na swojej ścieżce masz prawidłową dwuznakową sekwencję ucieczki \a
, która jest zwinięta do jednego znaku, którym jest ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Inne typowe sekwencje specjalne to \t
(tab \n
), \r
(znak nowego wiersza), (powrót karetki):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Jak widać, we wszystkich tych przykładach ukośnik odwrotny i następny znak literału zostały zgrupowane razem, tworząc pojedynczy znak w końcowym ciągu. Pełna lista sekwencji ucieczki Pythona znajduje się tutaj .
Można sobie z tym poradzić na wiele sposobów:
Python nie będzie przetwarzał sekwencji ucieczki w literałach łańcuchowych poprzedzonych r
lubR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python w systemie Windows powinien również obsługiwać ukośniki.
Możesz użyć os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... lub nowszy pathlib
moduł
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
W systemie Windows możesz używać /
ścieżki tak jak Linux lub macOS we wszystkich miejscach, o ile używasz PowerShell jako interfejsu wiersza poleceń. Jest preinstalowany w systemie Windows i obsługuje wiele poleceń systemu Linux, takich jak ls
polecenie.
Jeśli korzystasz z wiersza polecenia systemu Windows (tego, który pojawia się po wpisaniu cmd
w menu Start systemu Windows), musisz określić ścieżki zawierające \
tylko wewnątrz. Możesz używać /
ścieżek we wszystkich innych miejscach (edytor kodu, tryb interaktywny Python itp.).
Jeśli chcesz wkleić ścieżkę do okna z innego źródła (powiedzmy, Eksplorator plików) - możesz to zrobić przez input()
wywołanie w konsoli Pythona:
>>> input()
D:\EP\stuff\1111\this_is_a_long_path\you_dont_want\to_type\or_edit_by_hand
'D:\\EP\\stuff\\1111\\this_is_a_long_path\\you_dont_want\\to_type\\or_edit_by_hand'
Następnie po prostu skopiuj wynik