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

Réseau/Web Python Discussion :

Nas+iMac : Indéterminisme lors de récupération d'une arborescence disque [Python 3.X]


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2024
    Messages : 2
    Par défaut Nas+iMac : Indéterminisme lors de récupération d'une arborescence disque
    Bonjour,

    J'ai récemment migré mes données d'un ancien Nas (DS115j) vers un nouveau (DS224+). Je voudrais m'assurer que tous les fichiers ont bien été transmis, sans erreur. Pour cela je monte les deux volumes Nas sur mon iMac via SMB, puis je vérifie à l'aide d'un script Python qui parcours l'arborescence récursivement que, pour chaque fichier, la date, la taille et enfin le MD5. Ce script fonctionne bien dans la plupart des cas, sur plusieurs To de données.

    Anecdote : c'est avec ce script que j'ai découvert que iCloud se permettait de "perdre" des fichiers, mais c'est une autre histoire. Fin de l'anecdote.


    Le problème que je rencontre c'est que le parcours donne une erreur non déterministe entre deux exécutions. Voici le code simpliste qui reproduit l'indéterminisme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    import sys
    from pathlib import Path
     
    def scan(path):
        for file in path.iterdir():
            if file.exists()==False:
                print('Not exist: '+str(file))
            else:
                if file.is_dir():
                    scan(file)
     
    top_path = Path('/Volumes/thomas frigo')
    print(sys.getdefaultencoding())
    scan(top_path)
    Premier problème : Le file.exists() devrait toujours être ok puisque le fichier vient d'être renvoyé par la commande iterdir().
    Second problème : Le file.exists() donne un résultat différent entre deux exécutions:

    Exécution #1:
    utf-8
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire P1 (1).pdf
    Not exist: /Volumes/thomas frigo/synology/Le planisphère.m4a

    Exécution #2:
    utf-8
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire.doc
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire.odt
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire P1.doc
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire P1.pdf
    Not exist: /Volumes/thomas frigo/synology/STAV Rupture révolutionnaire (2).doc
    Not exist: /Volumes/thomas frigo/synology/Deuxième république.m4a

    ==> 2 résultats différents. Le point commun c'est qu'il s'agit systématiquement de fichiers avec des accents, cédilles, etc, Mais à l'opposé, seule une fraction des fichiers avec accents posent un problème d'indéterminisme, je ne pense donc pas qu'il s'agisse d'un problème d'encoding, même si il semble y avoir une corrélation...

    Est-ce que quelqu'un a déjà rencontré ce soucis ?

    Merci d'avance pour vos suggestion.

    Grégoire.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    A partir du moment où python récupère des infos remontées par SMB et que (file).exists() "fonctionne" sur des disques normaux, le soucis sera plutôt côté Imac+ accès NAS que côté Python.
    En tout cas, codez le même programme dans un autre langage, si vous retrouvez le même soucis, vous saurez que ce n'est pas Python (mais si vous ne le reproduisez pas, vous ne pourrez conclure...).

    note: (file).exists() n'accède qu'au répertoire (pas au contenu du fichier) et dans ce code, le nom du fichier a été sorti par une itération sur les fichiers du répertoire => normalement, on ne devrait obtenir cela que lorsque le fichier a été supprimé entre les 2 accès au répertoire.... Et si ce n'est pas le cas, le plus probable est côté mises à jour des différents caches utilisés.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2024
    Messages : 2
    Par défaut
    Merci pour vos suggestions.

    Après de nouvelles investigations, le problème semble venir du support SMB sur iMac... En fait je n'avais pas pensé à vérifier, mais même le Finder n'ouvre pas les fichiers problématique. Et plus drôle : j'ai modifié mon script pour tester le file.exists() jusqu'à 10 fois, avec une pause de 1s. Cela a presque totalement résolu les problème, les fichiers deviennent "dispo" au bout de 3 à 4 secondes...

    Donc je pense de plus en plus que Python n'y est pour rien du tout ;-)
    Je marque le sujet comme clos.

    Grégoire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme lors de recuperation d'un attribut en session
    Par riadhhwajdii dans le forum JSF
    Réponses: 0
    Dernier message: 02/08/2009, 15h06
  2. SoapException lors de recuperation de collection
    Par blopjerem dans le forum Services Web
    Réponses: 1
    Dernier message: 04/07/2008, 16h17
  3. Réponses: 2
    Dernier message: 21/05/2006, 14h02
  4. #Erreur : lors de récupération de variable
    Par priest69 dans le forum Access
    Réponses: 9
    Dernier message: 28/03/2006, 23h20
  5. [Applet][Javascript] Erreur lors de recuperation de donnees
    Par stoj dans le forum Interfaces Graphiques en Java
    Réponses: 16
    Dernier message: 16/09/2005, 11h52

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