2 votes

Est-ce que os.path.samefile suit les liens symboliques ?

Python os.path.samefile indique si deux chemins pointent vers le même fichier.

Si a est le chemin vers un lien symbolique qui pointe vers b , sera os.path.samefile("a", "b") retourner True o False ? Est-ce que cela est garanti sur tous les systèmes d'exploitation et les systèmes de fichiers ?

2voto

Sagar Points 496

Comme vous l'avez déjà constaté, os.path.samefile utilise os.stat . stat suit les liens symboliques :

Cette fonction suit normalement les liens symboliques ; pour statuer sur un lien symbolique, ajoutez l'argument follow_symlinks=False, ou utilisez lstat().

Cette fonction peut prendre en charge la spécification d'un descripteur de fichier et ne pas suivre les liens symboliques.

Revenons à votre question :

Si a est le chemin vers un lien symbolique qui pointe vers b , sera os.path.samefile("a", "b") retourner True o False ?

Cela devrait donner True puisque stat suit les liens symboliques par défaut.

Si vous avez besoin d'une fonction qui renvoie False dans ce cas, vous pouvez simplement créer le vôtre en utilisant le code que vous avez déjà trouvé, et l'option follow_symlinks=False avec stat.

Est-ce que cela est garanti pour tous les systèmes d'exploitation et les systèmes de fichiers ?

C'est une question difficile. Même si de nombreux langages de haut niveau tentent de cacher à l'utilisateur les détails du système sous-jacent, certaines opérations sont presque toujours dépendantes du système. L'entrée/sortie de fichiers entre souvent dans cette catégorie. En fait, l'entrée/sortie de fichiers dépend également du système de fichiers - si vous avez deux systèmes de fichiers différents montés sur le même hôte, le même code peut se comporter différemment sur les deux systèmes de fichiers.

Dans la pratique, la plupart des systèmes de fichiers se comportent de manière similaire dans la plupart des cas - vous devez simplement être conscient qu'il existe des cas limites. C'est pourquoi les normes existent. Si votre système est conforme à POSIX, à SUS ou à UNIX. Il est probable que True sera toujours retourné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X