2017-08-16 1 views
0

Pour mon projet, je dois lire certains fichiers. Mon collègue et moi avons un Mac, un Windows et parce que nous ne voulons pas toujours changer les noms de fichiers entiers, nous voulons insérer des chemins relatifs qui ne fonctionnent pas.Chemin relatif avec Windows et Python

Le chemin relatif que nous utilisons:

rel_path = "data/output/db_snapshot.log" 

Alors j'importé os et je voulais faire

path_db = os.path.abspath(rel_path) 

Mais pour la sortie que je reçois une erreur:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\mossnef\\PycharmProjects\\model_py_dms_bubble_system\\sim\\analysis\\data\\output\\db_snapshot.log' 

Si je pensais copier et coller tout le chemin dans mon chemin variable il n'y a pas de problème du tout et je peux le lire:

path_db = r"C:\Users\mossnef\PycharmProjects\model_py_dms_bubble_system\data\output\db_snapshot.log" 

je l'ai déjà découvert que pour Windows le r i ajouté est nécessaire pour une raison quelconque. Existe-t-il un moyen d'utiliser le chemin relatif pour le faire fonctionner pour Windows et Mac?

+0

On dirait que vous avez votre fichier python dans un sous-répertoire. – Chris

+0

Le 'r' que vous ajoutez au début signifie du texte brut, donc les antislashs traités comme une partie du chemin au lieu de char d'échappement. Il est requis sur Win, car le chemin de la victoire inclut \. Linux ne le fait pas. – Vinny

+1

Copie possible de [Chemins de fichier indépendants de la plate-forme?] (Https://stackoverflow.com/questions/6036129/platform-independent-file-paths) – davedwards

Répondre

0

Vous avez deux chemins différents.

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\mossnef\\PycharmProjects\\model_py_dms_bubble_system\\sim\\analysis\\data\\output\\db_snapshot.log' 

le deuxième chemin ne contient pas

\\sim\\analysis 

S'il vous plaît noter que os.path.abspath utilise os.getcwd() pour obtenir le chemin absolu.

Vous l'utilisez peut-être dans le mauvais dossier.