web-dev-qa-db-fra.com

Python Convertir les barres obliques en barres obliques

Je travaille en python et j'ai besoin de convertir ceci:

C:\dossierA\dossierB vers C:/dossierA/dossierB

J'ai trois approches:

dir = s.replace('\\','/')

dir = os.path.normpath(s) 

dir = os.path.normcase(s)

Dans chaque scénario, la sortie a été

C: folderAfolderB

Je ne suis pas sûr de ce que je fais mal, des suggestions?

19
John87

Votre problème spécifique est l’ordre et l’échappement de vos arguments replace, devrait être

s.replace('\\', '/')

Ensuite il y a:

posixpath.join(*s.split('\\'))

Ce qui sur une plate-forme * nix équivaut à:

os.path.join(*s.split('\\'))

Mais ne vous fiez pas à cela sous Windows, car il préférera le séparateur spécifique à la plate-forme. Également:

Notez que sous Windows, il existe un répertoire en cours pour chaque fichier drive, os.path.join ("c:", "foo") représente un chemin relatif au fichier répertoire en cours sur le lecteur C: (c: toto), pas c:\toto.

22
Jason S

J'ai récemment trouvé cela et j'ai pensé qu'il valait la peine de le partager:

import os

path = "C:\\temp\myFolder\example\\"

newPath = path.replace(os.sep, '/')

print newPath


Output:<< C:/temp/myFolder/example/  >>
7
Numabyte

Essayer

path = '/'.join(path.split('\\'))
7
TheoretiCAL

Que diriez-vous :

import ntpath
import posixpath
.
.
.
dir = posixpath.join(*ntpath.split(s))
.
.
0
T P Saravanan

Les noms de chemin sont formatés différemment dans Windows. la solution est simple, supposons que vous ayez une chaîne de chemin comme ceci:

data_file = "/Users/username/Downloads/PMLSdata/series.csv"

vous devez simplement le changer en ceci: (en ajoutant r devant le chemin)

data_file = r"/Users/username/Downloads/PMLSdata/series.csv"

Le modificateur avant la chaîne indique à Python qu'il s'agit d'une chaîne brute. Dans les chaînes brutes, la barre oblique inverse est interprétée littéralement et non comme un caractère d'échappement.

0
scapa

Pour définir la variable du chemin, vous devez ajouter r au début, puis ajouter l'instruction de remplacement .replace('\\', '/') à la fin.

par exemple:

In>>  path2 = r'C:\Users\User\Documents\Project\Em2Lph\'.replace('\\', '/')
In>>  path2 
Out>> 'C:/Users/User/Documents/Project/Em2Lph/'

Cette solution ne nécessite aucune bibliothèque supplémentaire

0
Mohammad ElNesr