Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.mixmin.net!aioe.org!NmhHF3GLbzxJR67/r10DhQ.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin Newsgroups: fr.comp.lang.python Subject: Re: Liens symboliques sous Windows Date: Wed, 17 Nov 2021 21:19:24 +0100 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <871r3eilgz.fsf@universite-de-strasbourg.fr.invalid> References: <6194c003$0$20251$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="38388"; posting-host="NmhHF3GLbzxJR67/r10DhQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cancel-Lock: sha1:U8y4thwOD70RXJ91Ja0Mm4GgWGM= X-Notice: Filtered by postfilter v. 0.9.2 Bytes: 2575 Lines: 43 ast writes: > Il me semble que les liens symboliques de Windows ne sont > pas bien reconnus par les modules os et pathlib. > Voyez: > >>>> from pathlib import Path >>>> p2 =3D Path('C:/Users/jm/desktop/json.txt - Raccourci.lnk') >>>> p2 > WindowsPath('C:/Users/jm/desktop/json.txt - Raccourci.lnk') >>>> p2.exists() > True >>>> p2.is_file() > True >>>> p2.is_symlink() > False D'apr=C3=A8s le nom du fichier, je pense qu'il s'agit d'un "shortcut" Windows, ce qui n'est pas la m=C3=AAme chose qu'un lien symbolique : un shortcut est un fichier normal (c'est =C3=A0 l'application de l'interpr=C3= =A9ter comme contenant le nom d'un autre fichier), alors qu'un lien symbolique est r=C3=A9solu par les appels syst=C3=A8me et est donc transparent pour les applications. > Sur cette derni=C3=A8re commande, j'attendais True et pour le > p2.is_file j'attendais plut=C3=B4t False Pour Path.is_file() (de pathlib) la r=C3=A9ponse concerne la cible du lien symbolique si ton chemin est celui d'un lien symbolique, donc impossible d'utiliser cela pour faire la distinction. Pour os.is_file() il y a un param=C3=A8tre "follow_symlinks" qui doit =C3= =AAtre plac=C3=A9 explcitement =C3=A0 False pour distinguer les fichiers "normaux" (regular) des liens vers des fichiers normaux. Apparemment pathlib n'a pas repris cette possibilit=C3=A9 et utilise la version par d=C3=A9faut (follow_symlinks=3DTrue). > Avec la lib os, c'est pareil Oui, je pense que c'est elle qui fait le travail. -- Alain.