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 :

Savoir si un fichier est utilisé par une application


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Savoir si un fichier est utilisé par une application
    Bonjour,
    ma question est dans le titre. L'idée est de ne pas modifier un fichier en même temps qu'une autre application.

    Est-ce que l'ouverture en mode écriture du module os gère ceci ?

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour rambc,

    Et bien sous Linux je regarderai dans /proc/*/fd/
    Je ne sais pas sous Windows ou Mac.

    Bonne recherche.

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci pour cette info.

    Peux-tu préciser un peu ?

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Effectuer une tentative de verrouillage (File lock).
    Si échec c'est que le fichier est en cours d'utilisation
    http://packages.python.org/lockfile/lockfile.html

    Pour apprendre le Python suis ces tutoriels et cours Python : http://python.developpez.com/cours/
    Le meilleur tutoriel Python : Apprendre à programmer avec Python 3 par Gérard Swinnen http://python.developpez.com/cours/apprendre-python3/
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par rambc Voir le message
    Peux-tu préciser un peu ?
    A vrais dire... Non.
    Je me casse les dents sur le sujet depuis ta question. C'est bien plus compliqué et j'ai beau regarder du coté de /proc, lsof et autre cela ne fonctionne pas. De plus il n'y a rien de bien concret sur le sujet sur le web.
    Mais comme le sujet m'intéresse je ne désespère pas de trouver.

    Quiz de la solution de Zavonen, qui semble bonne : Les applications qui utilisent une 'image' du fichier. Exemple vi qui travaille sur un fichier temporaire dans /tmp. Je teste cela ce WE.

    @+

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour.

    Citation Envoyé par PauseKawa Voir le message
    Je me casse les dents sur le sujet depuis ta question. C'est bien plus compliqué et j'ai beau regarder du coté de /proc, lsof et autre cela ne fonctionne pas. De plus il n'y a rien de bien concret sur le sujet sur le web.
    Pour une fois que je ne pose pas une question à la c---.

    Citation Envoyé par PauseKawa Voir le message
    Quiz de la solution de Zavonen, qui semble bonne : Les applications qui utilisent une 'image' du fichier. Exemple vi qui travaille sur un fichier temporaire dans /tmp. Je teste cela ce WE.
    J'ai constaté cela aussi avec TextWrangler sous Mac qui accepte que le fichier soit modifié par une autre application, mais qui arrive aussi à savoir qu'une modification a été faite par une autre application.

    Le module lockfile indiqué dans le post ci-dessus ne fonctionne pas sous Python 3...

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    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 696
    Par défaut
    Salut,

    De façon générale, c'est une "feature" qui repose sur des fonctionnalités de l'OS dont Python n'est que "client"...
    Les seules "features" qu'on peut espérer retrouver dans les différents OS sont celles héritées de leur conformité POSIX - mais c'est plutôt "unixien", Windows l'est en partie modulo des ajouts.

    Reste à réaliser une fonction is_open déclinée différemment sur chaque OS. Sur Google, chercher "mandatory file locking".

    Ceci dit, on arrive inévitablement à réaliser un protocole obligeant A à ouvrir ses fichiers d'une certaine façon pour que B le sache - un protocole "simple" peut être réalisé via fcntl pour poser des "locks" - sur UNIX.

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

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re bonsoir,

    Citation Envoyé par rambc Voir le message
    L'idée est de ne pas modifier un fichier en même temps qu'une autre application.
    C'est juste une question théorique ?
    Ne trouvant pas de solution je me demande ce que tu souhaite faire exactement.

  9. #9
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour,
    en fait dans le cadre d'un projet perso, l'utilisateur va travailler sur des fichiers TXT. Je voudrais donc savoir si un fichier ouvert dans mon appli. a été modifié depuis une autre afin de laisser le choix à l'utilisateur d'enregistrer la modification faite dans mon appli. ou bien celle faite ailleurs.

    J'avais bien pensé à os.stat mais je pensais qu'il existait un outil tout prêt pour cela.

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    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 696
    Par défaut
    Citation Envoyé par rambc Voir le message
    Bonjour,
    en fait dans le cadre d'un projet perso, l'utilisateur va travailler sur des fichiers TXT. Je voudrais donc savoir si un fichier ouvert dans mon appli. a été modifié depuis une autre afin de laisser le choix à l'utilisateur d'enregistrer la modification faite dans mon appli. ou bien celle faite ailleurs.
    Pourquoi ne pas réaliser cela avec avec un outil de gestion de versions tel que SVN ou Mercurial?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Oups, je me suis peut-être mal exprimé. En fait, je bosse sur une éditeur de documents scientifiques.

  12. #12
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Dans ce cas c'est toi qui gère l'éditeur, c'est cela ?
    fcntl.lockf (est son équivalent win32api) ?

    Bon code

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    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 696
    Par défaut
    Citation Envoyé par rambc Voir le message
    Oups, je me suis peut-être mal exprimé. En fait, je bosse sur une éditeur de documents scientifiques.
    Ce sont des fichiers textes, comme du "code source" normal, non?
    Il n'est donc pas interdit de "versionner" et de gérer les mises à jours effectuées via des outils "ad hoc".
    Si on veut rendre cela plus transparent, on peut aller vers du WebDAV/DeltaV.

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

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  2. Tester si le fichier est utilisé par une autre appli
    Par sivaller dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/06/2008, 19h47
  3. Savoir si un fichier est utilisé
    Par arnaud036 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/09/2007, 11h57
  4. Réponses: 7
    Dernier message: 15/06/2007, 18h50
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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