Risposte:
puoi usare sempre:
'C:/mydir'
funziona sia su Linux che su Windows. Altra possibilità è
'C:\\mydir'
se hai problemi con alcuni nomi puoi anche provare i letterali di stringa grezzi:
r'C:\mydir'
tuttavia è consigliabile utilizzare le os.path
funzioni del modulo che selezionano sempre la configurazione corretta per il proprio sistema operativo:
os.path.join(mydir, myfile)
Da python 3.4 puoi anche usare il modulo pathlib . Ciò equivale a quanto sopra:
pathlib.Path(mydir, myfile)
o
pathlib.Path(mydir) / myfile
Usa il os.path
modulo.
os.path.join( "C:", "meshes", "as" )
O usa stringhe grezze
r"C:\meshes\as"
Vorrei anche raccomandare spazi nel percorso o nei nomi dei file. E potresti usare doppie barre rovesciate nelle corde.
"C:\\meshes\\as.jpg"
"C:\"
come prima voce? Questo rovina un po 'di pulizia dell'uso join
?
"C:\"
al centro il nome del file. Inoltre, puoi utilizzare os.path.normpath
prima o dopo un join, per assicurarti che il percorso venga stampato correttamente.
os.path.join( "C:\\", "meshes", "as" )
Sì, \
in stringhe di Python i letterali indicano l'inizio di una sequenza di escape. Nel tuo percorso hai una sequenza di escape di due caratteri valida \a
, che è compressa in un carattere che è ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Altre sequenze di escape comuni includono \t
(tab), \n
(avanzamento riga), \r
(ritorno a capo):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Come puoi vedere, in tutti questi esempi la barra rovesciata e il carattere successivo nel letterale sono stati raggruppati per formare un singolo carattere nella stringa finale. L'elenco completo delle sequenze di escape di Python è qui .
Esistono diversi modi per gestirlo:
Python non elaborerà le sequenze di escape in valori letterali stringa con prefisso r
oR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python su Windows dovrebbe gestire anche le barre in avanti.
Puoi usare os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... o il modulo più recentepathlib
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
In Windows, puoi utilizzare il /
tuo percorso proprio come Linux o macOS in tutti i luoghi purché utilizzi PowerShell come interfaccia della riga di comando. Viene preinstallato su Windows e supporta molti comandi Linux come ls
command.
Se si utilizza il Prompt dei comandi di Windows (quello che appare quando si digita il cmd
menu Start di Windows), è necessario specificare i percorsi \
appena all'interno di esso. Puoi usare i /
percorsi in tutti gli altri posti (editor di codice, modalità interattiva Python, ecc.).
Nel caso in cui desideri incollare il percorso di Windows da un'altra fonte (ad esempio Esplora file), puoi farlo tramite la input()
chiamata nella console di Python:
>>> 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'
Quindi copia il risultato