Réponses:
vous pouvez toujours utiliser:
'C:/mydir'
cela fonctionne à la fois sous Linux et Windows. L'autre possibilité est
'C:\\mydir'
si vous rencontrez des problèmes avec certains noms, vous pouvez également essayer des littéraux de chaîne bruts:
r'C:\mydir'
cependant, la meilleure pratique consiste à utiliser les os.path
fonctions du module qui sélectionnent toujours la configuration correcte pour votre système d'exploitation:
os.path.join(mydir, myfile)
Depuis python 3.4, vous pouvez également utiliser le module pathlib . Ceci est équivalent à ce qui précède:
pathlib.Path(mydir, myfile)
ou
pathlib.Path(mydir) / myfile
Utilisez le os.path
module.
os.path.join( "C:", "meshes", "as" )
Ou utilisez des chaînes brutes
r"C:\meshes\as"
Je recommanderais également aucun espace dans le chemin ou les noms de fichiers. Et vous pouvez utiliser des doubles barres obliques inverses dans vos chaînes.
"C:\\meshes\\as.jpg"
"C:\"
comme première entrée? Est-ce que cela gâche une partie de la propreté de l'utilisation join
?
"C:\"
au milieu du nom de fichier. En outre, vous pouvez utiliser os.path.normpath
avant ou après une jointure, pour vous assurer que le chemin est bien imprimé.
os.path.join( "C:\\", "meshes", "as" )
Oui, \
en Python, les littéraux de chaîne indiquent le début d'une séquence d'échappement. Dans votre chemin, vous avez une séquence d'échappement valide de deux caractères \a
, qui est réduite en un seul caractère qui est ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
D'autres séquences d'échappement courantes incluent \t
(tabulation), \n
(saut de ligne), \r
(retour chariot):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Comme vous pouvez le voir, dans tous ces exemples, la barre oblique inverse et le caractère suivant du littéral ont été regroupés pour former un seul caractère dans la chaîne finale. La liste complète des séquences d'échappement de Python est ici .
Il existe plusieurs façons de gérer cela:
Python ne traitera pas les séquences d'échappement dans les littéraux de chaîne préfixés par r
ouR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python sur Windows devrait également gérer les barres obliques.
Vous pourriez utiliser os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... ou le module plus récentpathlib
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
Sous Windows, vous pouvez utiliser /
dans votre chemin comme Linux ou macOS dans tous les endroits, à condition d'utiliser PowerShell comme interface de ligne de commande. Il est pré-installé sur Windows et prend en charge de nombreuses commandes Linux comme la ls
commande.
Si vous utilisez l'invite de commande Windows (celle qui apparaît lorsque vous tapez cmd
dans le menu Démarrer de Windows), vous devez spécifier les chemins avec \
juste à l'intérieur. Vous pouvez utiliser des /
chemins dans tous les autres endroits (éditeur de code, mode interactif Python, etc.).
Si vous souhaitez coller le chemin Windows d'une autre source (par exemple, l'Explorateur de fichiers), vous pouvez le faire via un input()
appel dans la console 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'
Ensuite, copiez simplement le résultat