salut J'ai lu des articles liés à la conversion en arrière pour faire avancer les barres obliques. Mais Sol était d'utiliser une chaîne brute. P>
mais problème dans mon cas est: p>
Je vais obtenir un chemin de fichier de manière dynamique à une variable var = 'C: \ Dummy_Folder \ A.txt' Dans ce cas, j'ai besoin de le convertir en esclaves avant. Mais à cause de '\ a', je ne suis pas capable de convertir en esclaves avant p>
Comment je le convertir? Ou comment dois-je modifier cette chaîne en chaîne brute afin que je puisse le changer pour transférer slash p>
5 Réponses :
Ne faites pas cela. Il suffit d'utiliser OS.Path et laissez-le gérer tout. Vous ne devriez pas définir explicitement les barres obliques vers l'avant ou l'arrière. Mais à nouveau, ne le faites pas. Il suffit d'utiliser Os.Path et soyez heureux! P> P>
Merci pour la réponse, mais j'ai essayé Os.Path, mais cela ne changera pas en arrière pour faire avancer la barre oblique, car "\ a", \ n 'sera traitée avant de convertir
Abhishek, vous pouvez le remplacer à l'aide de la façon dont j'ai montré ci-dessus, mais que vous ne devriez pas.
Le problème est qu'il existe des bibliothèques qui se bloque avec le format de chemin Windows (même sous Windows) et nous devons convertir ceux-ci.
>>> 'C:\\dummy_folder\\a.txt'.replace('\\', '/') 'C:/dummy_folder/a.txt' In a string literal, you need to escape the \ character.
Merci pour Sol, comment avez-vous changé de simples slashes en arrière à 2 slashes en arrière?
Vous devez le coder comme ça avec deux backslashes. Une barre oblique inverse est un caractère spécial et pour obtenir une true backslash dans le littéral de la chaîne dont vous avez besoin de taper deux.
Les chaînes brutes sont pour les littéraux de chaînes (écrits directement dans le fichier source), ce qui ne semble pas être le cas ici. Dans tous les cas, les barres obliques avant ne sont pas des caractères spéciaux - ils peuvent être intégrés dans une chaîne ordinaire sans problèmes. Ce sont des glashes en arrière qui ont normalement une autre signification dans une chaîne et doivent être "échappées" afin qu'elles soient interprétées comme des barres obliques basses littérales.
Pour remplacer les backslashes avec des barres obliques avant: P>
# Python: string = r'C:\dummy_folder\a.txt' string = string.replace('\\', '/') # Ruby: string = 'C:\\dummy_folder\\a.txt' string = string.gsub('\\', '/')
Les chemins de manutention comme une simple chaîne pourrait vous mettre en difficulté.; Encore plus si le chemin que vous manipulez est une entrée utilisateur ou peut varier de manière imprévisible. P>
Un système d'exploitation différent a une manière différente d'exprimer le chemin d'un fichier donné et chaque langage de programmation moderne possède des méthodes propres pour gérer les chemins et les références du système de fichiers. Sûrement python et ruby l'ont: p>
Il y a aussi Os.Path.normPath (), qui convertit les backslashes et slash en fonction du système d'exploitation local. S'il vous plaît voir ici pour des informations détaillées d'utilisation. Vous l'utiliseriez de cette façon:
>>> string = r'C:/dummy_folder/a.txt' >>> os.path.normpath(string) 'C:\dummy_folder\a.txt'
Merci d'avoir souligné Normpath, cependant, cela ne fonctionne que d'une manière: convertir des barres obliques vers l'avant sur les barres obliques. Cela ne fonctionne pas dans l'autre sens (retour à la barre oblique à transmettre). Je suppose que le meilleur moyen est d'assumer des chemins Linux et de vous assurer que toutes les chaînes de chemin utilisent des barres obliques. Ensuite, appelez Normpath () sur la chaîne juste avant d'être utilisé.
C'est pour moi la meilleure réponse. Sous Mac OS X, OS.Path.normPath code> conserve des barres obliques, comme prévu. Sous Windows, les barres obliques sont converties en backslashes.
D'où vient cette chaîne "de manière dynamique"? La place principale Backslash a une signification particulière dans vos programmes Python se trouve dans vos littéraux de chaîne de code source Python, qui devrait être statique.
Pourquoi B> voulez-vous les convertir?
Sur Windows, Python Sorties
C: \ Chemin \ to \ File.txt code>; Cependant, je désire exécuter une commande dans Git Bash qui devrait être
/c/path/to/file.txt code>