Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/06/2007, à 13:47

tenshu

[Résolu] Python - Listage de repertoire et casse

Bonjour à tous,

J'ai besoin d'un tuyau j'ai besoin de lister le contenu d'un répertoire
en l'occurence "PSP/SAVEDATA"

Mais j'ignore si l'utilisateur utilise la casse ou non :
PSP - Psp - psp

Auriez vous une solution pour contourner ce problème de casse?

Dernière modification par tenshu (Le 16/06/2007, à 13:41)

Hors ligne

#2 Le 15/06/2007, à 01:36

Imagine

Re : [Résolu] Python - Listage de repertoire et casse

Pour tout mettre en majuscule, récupère la saisie de l'utilisateur dans une variable "a" puis

a = a.upper()

tongue

Dernière modification par Imagine (Le 15/06/2007, à 01:36)

Hors ligne

#3 Le 15/06/2007, à 15:22

tenshu

Re : [Résolu] Python - Listage de repertoire et casse

en fait c'est pas tout a fait ca

je sait que le reperoire s'appelle psp mais j'ignore sa casse

En gros je cherche comment changer de répertoire sans tenir compte de la casse
:q

Oui a priori on devrait pas le faire mais le fichier en l'occurrence peut avoir été créé à la main et comble de l'horreur sous windows

Dernière modification par tenshu (Le 15/06/2007, à 15:37)

Hors ligne

#4 Le 15/06/2007, à 23:01

tenshu

Re : [Résolu] Python - Listage de repertoire et casse

personne hmm

Hors ligne

#5 Le 15/06/2007, à 23:06

abetsic

Re : [Résolu] Python - Listage de repertoire et casse

Si tu peux récupérer la liste des repertoires du dossier courant dans un tableau, tu peux parcourir le tableau et pour chaque entrée du tableau tu mets tout en majuscule et tu compares à "PSP" si la comparaison est bonne tu as trouvé le répertoire...

Hors ligne

#6 Le 15/06/2007, à 23:14

NicoA380

Re : [Résolu] Python - Listage de repertoire et casse

Pour lister un répertoire :

>>> import glob
>>> glob.glob("/tmp/*")
['/tmp/orbit-nico', '/tmp/keyring-6Mw1JL', '/tmp/ssh-IekGvs5718', '/tmp/gconfd-nico', '/tmp/mapping-nico', '/tmp/virtual-nico.UnEBQi', '/tmp/OSL_PIPE_1000_SingleOfficeIPC_d3907e11627c7b9d3034f9ac2b957aab', '/tmp/svkgi.tmp', '/tmp/purpleMKA1TT', '/tmp/purpleF1E2TT', '/tmp/plugtmp']

Sinon, ce que propose abetsic est le plus simple (à moins qu'il y ai une fonction 'cd' qui ne sois pas 'case sensitive').

Hors ligne

#7 Le 16/06/2007, à 09:28

aleph

Re : [Résolu] Python - Listage de repertoire et casse

Tout ceci s'explique aisément et les solutions *correctes* à ce type de problème ne sont pas si compliquées, mais absentes et/ou généralement fausses sur ce forum.

Comble de malheur, je travaille sous Windows. J'en ai un peu marre des gens qui tapent systématiquement, aveuglement et béatement sur l'autre OS, quand l'origine du problème se situe *clairement* entre le clavier et le dossier de la chaise.

Aujourd'hui, je vais passer un peu de temps ici, http://lists.wxwidgets.org/. Cela fait six, sept, huit (?) ans que j'y contribue. Durant toutes ces années, je n'ai *jamais*, je dis bien jamais, vu un intervenant dénigrer l'os d'une autre personne que ce soit OS X, Windows, "Linux", BSD ou Solaris.

#8 Le 16/06/2007, à 13:40

tenshu

Re : [Résolu] Python - Listage de repertoire et casse

je suis pas sur de comprendre ce que tu racontes

C'est effectivement un problème simple mais récurrent

je l'ai résolu de cette façon :

  def get_dir(base_dir, unknown_dir):
    list = os.listdir(base_dir)
    for item in list:
      if item.upper() == unknown_dir.upper():
        return item

Par contre je pense que l'on a tout à fait le droit de critiquer d'autre OS
surtotu si cette criique est légitime

Hors ligne

#9 Le 16/06/2007, à 18:14

abetsic

Re : [Résolu] Python - Listage de repertoire et casse

aleph a écrit :

Tout ceci s'explique aisément et les solutions *correctes* à ce type de problème ne sont pas si compliquées, mais absentes et/ou généralement fausses sur ce forum.

Comble de malheur, je travaille sous Windows. J'en ai un peu marre des gens qui tapent systématiquement, aveuglement et béatement sur l'autre OS, quand l'origine du problème se situe *clairement* entre le clavier et le dossier de la chaise.

Aujourd'hui, je vais passer un peu de temps ici, http://lists.wxwidgets.org/. Cela fait six, sept, huit (?) ans que j'y contribue. Durant toutes ces années, je n'ai *jamais*, je dis bien jamais, vu un intervenant dénigrer l'os d'une autre personne que ce soit OS X, Windows, "Linux", BSD ou Solaris.

Merci de ne pas mettre tout le monde dans le même panier...

Et puis as tu vu quelqu'un sur ce thread dénigrer un quelconque OS ? ou une quelconque communauté ? (comme tu le fais en ce moment).

Par ailleurs je ne prétend pas avoir donné *la* meilleur solution au problème posé. Mes connaissances en python sont très limité et j'ai répondu comme je pouvais puisque il n'y avait pas eu de réponse satisfaisante.

Cordialement.

Hors ligne

#10 Le 16/06/2007, à 18:29

NicoA380

Re : [Résolu] Python - Listage de repertoire et casse

tenshu a écrit :

je suis pas sur de comprendre ce que tu racontes

C'est effectivement un problème simple mais récurrent

je l'ai résolu de cette façon :

  def get_dir(base_dir, unknown_dir):
    list = os.listdir(base_dir)
    for item in list:
      if item.upper() == unknown_dir.upper():
        return item

Par contre je pense que l'on a tout à fait le droit de critiquer d'autre OS
surtotu si cette criique est légitime

Bah voila, c'est good !

Allez, histoire de dire que le python prend moins de place :

def get_dir(base_dir, unknown_dir): return ([d for d in os.listdir(base_dir) if d.upper()==unknown_dir.upper()]+[None])[0]

Hors ligne

#11 Le 16/06/2007, à 22:19

tenshu

Re : [Résolu] Python - Listage de repertoire et casse

ouai mais c'est moins lisible :q

Hors ligne

#12 Le 17/06/2007, à 11:39

aleph

Re : [Résolu] Python - Listage de repertoire et casse

> tenshu
C'est effectivement un problème simple mais récurrent

---

Probablement, tu veux lire des données provenant d'une partition de type FAT32.
Ce qu'il faut savoir est que l'encodage utilisé dans le nommage des fichiers de ce type de partition est mbcs.

Les gens écrivent - inconsciemment - du code qui va "supposer" un autre encodage. Ils croient que leur code fonctionne, mais ce n'est que pur hasard. Il n'est compatible qu'avec une partie de l'encodage mbcs.

Conséquence:
Il croient avoir trouvé une solution simple à ce problème et proposent des solutions incorrectes.
Solutions que d'autres utilisent et qui causeront des difficultés, d'où la récurrence de ce type de problème.

Que faire ?
Prendre un peu de temps et étudier ces questions d'encodage. Nettement mieux que toutes les explications que je pourrais donner ici.

Ces problèmes d'encodage se retrouvent aussi de façon récurrente dans l'utilisation de fichiers texte.

Moi, je ne peux que rendre le programmeur attentif à ce sujet.

Je rappelle ici que ces questions d'encodage ne sont pas liés à une plateforme particulière.

PS La solution que tu as trouvée ne fonctionne probablement que chez toi et quelques autres, mais ne ne peut être considérée comme une solution générale.

#13 Le 18/06/2007, à 09:13

tenshu

Re : [Résolu] Python - Listage de repertoire et casse

pourquoi n'est elle pas satisfaisante?
Elle devrait tout a fait prendre en compte les différence d'encodage
puisque c'est la fonction listidr() qui se charge de formatter la liste des repertoire
J'effectue une simple comparaison

J'avoue que j'ai du mal à te suivre

Hors ligne