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

Lua Discussion :

Lua - Comment lire le contenu d'un dossier ?


Sujet :

Lua

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lua - Comment lire le contenu d'un dossier ?
    Bonjour à tous,

    Je fais appel à vous parce que je cale sur une recherche de fonction.
    J'utilise actuellement un gestionnaire d'énergie dont les fonctions sont codées en Lua (et oui, ce langage n'est pas utilisé que dans le monde du jeu vidéo ), et je communique actuellement avec un serveur FTP sur lequel je viens chercher des informations.
    Mon problème étant que j'ai besoin de pouvoir récupérer le contenu d'un dossier qui contient plusieurs fichiers dont je ne connais pas les noms exacts. En effet, le nom des fichiers est horodaté à une date que je ne connais pas à l'avance. Par exemple, un fichier va s’appeler "Bibi240XXXXXXXXXXXXXX.txt" avec XXXXXXXXXXXXXX au format année/mois/jour/heure/minute/seconde.

    Je suis capable de récupérer un fichier dont je connais le nom exact, mais il me faudrait être capable de lire tous les fichiers contenu dans un dossier.
    2 solutions me conviendraient :
    -Dans l'idéal, récupérer tous les fichiers commençant par "Bibi240", est-ce qu'il existe la possibilité de valider toutes les terminaisons possibles, du genre : Trouver "Bibi240*.txt" ?
    -Sinon récupérer tous le contenu du dossier. Je m'occuperai ensuite de filtrer ceux qui m'intéressent.

    Et parce que ce ne serait pas drôle sinon, les fonctions Lua étant implémentées dans le gestionnaire d'énergie, je n'ai pas la possibilité d'accéder aux librairies telles que "lfs".
    Je n'ai actuellement trouvé aucune fonction ou astuce me permettant de résoudre mon problème, donc si vous avez des pistes, je prends toutes les idées avec grand plaisir !

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur applications 3D temps réel
    Inscrit en
    Août 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur applications 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 63
    Points : 412
    Points
    412
    Par défaut
    J'avais trouvé ça sur Stack Overflow :

    http://stackoverflow.com/questions/5...ctory-in-a-lua

    La meilleur réponse propose effectivement de passer par LFS, mais les réponses suivantes proposent d'utiliser io.popen avec la commande système pour lister les fichiers et de parser ligne par ligne le résultat.

  3. #3
    Membre régulier
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 71
    Points
    71
    Par défaut
    Bonsoir,

    J'allais justement suggérer LFS. Mais puisqu'il ne s'agit pas d'une option viable, je pense que le mieux serait de passer par os.execute ou io.popen (quoique le second soit plus souple). Il s'agira effectivement de passer à cette fonction la commande système affichant le contenu d'un dossier (en tant que string), puis de récupérer le résultat et le parser pour avoir les noms des fichiers.

    EDIT: Ces fonctions peuvent ne pas être disponible. À vérifier donc. En effet, certaines fonctions des librairies standard ne sont tout simplement pas supportées sur les versions embarquées de Lua.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à vous deux pour vos réponses.

    J'ai essayé la fonction "io.popen" qui ne semble pas fonctionner, pourtant la fonction io.open (sans "p" cette fois) l'est bien.

    J'ai fini par faire tourner un petit code (qui n'est pas en Lua) sur le serveur qui regroupe mes fichiers afin de les assembler en un fichier unique dont je connais le nom....

    J'ai l'impression d'être bien limité avec mon Lua embarqué, et je suis loin de maîtriser ce langage, donc je risque de revenir poser quelques questions sur le forum.

    PS : Le sujet n'étant pas vraiment résolu, je le laisse ouvert si jamais quelqu'un passe par là et trouve une astuce.

  5. #5
    Membre régulier
    Homme Profil pro
    Ing. Hydraulicien
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing. Hydraulicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Ludostralie Voir le message
    Merci à vous deux pour vos réponses.

    J'ai essayé la fonction "io.popen" qui ne semble pas fonctionner, pourtant la fonction io.open (sans "p" cette fois) l'est bien.
    Bonsoir,

    io.open permet d'accéder au contenu de fichier. La fonction à laquelle je fais référence est io.popen. Elle permet d'exécuter un programme.
    Par exemple, sur Windows, la commande shell pour lister les fichiers du dossiers courant est "dir". Pour l'exécuter à partir de Lua, avec io.popen cela donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    local fhandle = io.popen('cd')
    local result = fhandle:read('*a')
    Nota, os.execute fonctionne de la même manière, sauf qu'elle renvoie un code de statut (qui dépend du système (avec Lua 5.1), ou un booléen (avec Lua 5.2).

    Il faudrait peut être chercher à vérifier si ces fonctions sont supportées. En utilisant un print, ou (io.write), tu pourrais afficher les fonctions io et os disponibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    local function explore (t)
      print('------')
      for k,v in pairs(t) do
        print(k, v) -- ou io.write(k..'\t'..tostring(v),'\n')
      end
    end
     
    print('My Lua Version: '.._VERSION) -- ou io.write(''My Lua Version: '.._VERSION..'\n')
    assert(io and type(io) == 'table', 'io is not supported')
    assert(io and type(os) == 'table', 'os is not supported')
    explore(io)
    explore(os)

Discussions similaires

  1. Comment lire le contenu d'un dossier
    Par pierrot10 dans le forum Général Python
    Réponses: 4
    Dernier message: 16/07/2013, 10h51
  2. Comment lire le contenu d'une cellule
    Par lthibert dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2007, 17h21
  3. Comment lire le contenu en arabe d'une cellule excel avec
    Par deneche dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/03/2006, 10h01
  4. [Débutant]Comment lire le contenu d'une Listview ?
    Par PierreBord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/02/2006, 16h40
  5. Comment lire le contenu d'un fichier ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 24/11/2005, 08h17

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