IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

lister les fichiers avec des caractères 'interdits'


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Par défaut lister les fichiers avec des caractères 'interdits'
    Bonjour,
    sous Ubuntu, j'ai des fichiers ou répertoires dont le nom a des caractères interdits comme '?' que je voudrais supprimer.
    Mais listdir par exemple ne les contient même pas.
    Comment faire ?
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    J'adore python mais perso pour ce type de tache j'utilise le terminal.
    t'effacera tous les fichiers et répertoires contenant un '?' situés dans le répertoire actuel.
    Edit: omission du '\' devant le '?'...

  3. #3
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Salut,

    Une RegEx peut le faire aussi.

  4. #4
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Si tu tiens à rester sur du python regarde aussi le module glob ou la méthode glob() de pathlib(si tu l'utilises)...

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Par défaut linux fichiers avec '?' dans le nom
    merci pour toutes ces réponses.
    Une précision : je ne veux effacer que le "?", pas le fichier.
    Bonne soirée

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par jam7575 Voir le message
    Une précision : je ne veux effacer que le "?", pas le fichier.
    Dans les grandes lignes:
    Tu peux renommer les fichiers trouvés par exemple avec une compréhension de liste [nom for nom in resultats if '?' in nom] avec le nom du fichier auquel tu appliques replace('?', ''). Pathlib est fait pour manipuler les noms de fichier , c'est la bonne occasion d'apprendre à l'utiliser si tu ne l'utilises pas encore ... si tu galères, montre-nous.

    édit: correction

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Par défaut python et fichiers dont le nom contient '?'
    suite...
    Avec os.walk, les fichiers avec "?" dans le nom apparaissent.

    Par contre, je ne vois pas trop comment glob peut aider.

    Bonne soirée

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    J'adore python mais perso pour ce type de tache j'utilise le terminal.
    t'effacera tous les fichiers et répertoires contenant un '?' situés dans le répertoire actuel.
    dans le shell, le ? est un caractère spécial (glob). Il signifie "un caractère quelconque".
    pour trouver un fichier dont le nom contient un ?, il faut protéger ce ? pour qu'il perde sa signification :
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ printf '%s\n' /tmp/*\?*
    foo?bar
    $
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 068
    Par défaut
    Hello,

    @Hominidé,

    J'adore python mais perso pour ce type de tache j'utilise le terminal.
    J'ai tendance à dire que python évite de devoir réécrire en batch un code bash si on veut que ça fonctionne sous Windows, la portabilité n'est pas toujours la première pensée...

    Pour la commande, j'avoue que le 1er Post du PO n'est pas clair et que ça peut porter à confusion. Preuve que poser la problématique de manière claire c'est important !

    @jam7575,

    Une précision : je ne veux effacer que le "?", pas le fichier.
    Eh oui, 5h de perdu...

    j'ai des fichiers ou répertoires dont le nom a des caractères interdits comme '?' que je voudrais supprimer
    En validant le choix python, un nom de fichier reste une chaîne de caractères. Vous avez plusieurs possibilités pour "modifier" une chaîne de caractères et des modules qui vous permettront de modifier un fichier comme vous le souhaiteriez.
    Je ne crois pas avoir vu un début de code de votre part, alors que ce genre d'exercice est très courant dans les tutoriels.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par jam7575 Voir le message
    Mais listdir par exemple ne les contient même pas.
    Chez moi aussi j'ai testé, créé un fichier "xxx?" et os.listdir l'affiche parfaitement. C'est d'ailleurs tout à fait compréhensible vu que le caractère "?" (qui, contrairement à ce qui est écrit dans le titre du topic, n'est pas un caractère "interdit" mais un caractère "spécial" et "spécial" parce qu'interprété) est interprété par le shell et pas par Python. Et même en shell il est interprété à l'entrée, pas à la sortie => un "ls" ou autre affichera parfaitement les "?" présents dans le nom du fichier.

    Pour le reste tout à été dit. Et moi aussi, sauf s'il y a des contraintes non dites ici (portabilité, intégration, etc), je conseillerais le shell plutôt approprié pour ce genre de travail.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour.
    mon Kdo de Noël :
    Avec la commande rename (à installer si nécessaire: sudo apt install rename)
    depuis le répertoire concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rename -n 's/\?//g' ./*
    La commande est une simulation, tu peux donc l'exécuter sans risque . Si cela te convient tu enlèves l'option -n pour que la commande renomme réellement tes fichiers.
    La commande va chercher tous les fichiers contenant un ou plusieurs '?' du répertoire en cours, et les renomme sans le ou les '?'

  12. #12
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Par défaut python et noms de fichier avec caractère à problème
    Merci,
    je connais rename en effet,mais je cherchais (ce qui marche avec walk) à identifier les fichiers avec "?", avant de les renommer.
    Bonnes fêtes

Discussions similaires

  1. Lister les fichiers avec Nom du dernier utilisateur
    Par stdonat dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/09/2018, 14h55
  2. [XL-2003] lister les fichiers contenant des liens
    Par ouisansdoute dans le forum Excel
    Réponses: 1
    Dernier message: 11/06/2010, 17h26
  3. lister tous les fichiers avec des différences entre deux répertoires.
    Par contremaitre dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/03/2008, 15h24
  4. Lister les fichiers avec find
    Par mrttlemonde dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/06/2006, 15h42
  5. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo