2010-08-25 5 views
1

Le problème actuel est dû au scénario suivant. J'ai un script qui exécute un programme en ligne de commande pour trouver tous les fichiers d'une certaine extension dans un dossier spécifique, appelons ces fichiers Fichier A. Une autre section du script exécute une commande grep à travers chaque fichier pour les noms de fichiers dans le fichier A. Ce qui serait la meilleure méthode pour stocker quels noms de fichiers sont dans le fichier A et seulement le fichier A, et comment pourrais-je l'obtenir? MerciProblème nécessitant des listes

+1

Pouvez-vous reformuler votre question? Ajouter un exemple ou deux aiderait aussi. –

+0

Etes-vous en train d'essayer d'enregistrer la liste de noms de fichier dans un fichier pour l'utiliser ultérieurement dans un autre programme? –

+0

@ Manoj: Le fichier "001356.doc" contient le texte suivant: "001354, 001359, 001245". Ce texte se trouve être des noms de fichiers. ex: 001354.doc, 001359.doc, 001245.doc Le produit final j'ai besoin est quelque chose comme ça (001356.doc) -001354.doc -001359.doc -001245.doc @ Noctis: oui – user428370

Répondre

3

EDIT: Je vois que vous étiez celui qui a posé la question précédente! Pourquoi en ouvrir un nouveau?


Il y avait une question récente sur ce problème exact - la structure que vous modélisez est un graphe orienté . Voir my answer à cette question, en utilisant le paquet networkx de Python. L'utilisation de ce paquet est une bonne idée si vous allez faire un post-traitement des données. Cependant, pour des situations simples, vous pouvez créer votre propre structure de données. Voici un exemple utilisant une représentation de liste d'adjacence d'un graphe; il n'est pas difficile d'utiliser une matrice d'adjacence à la place.

from collections import defaultdict 
adj_list = defaultdict(set) 

for filename in os.listdir(<dir>): 
    with open(filename) as theFile: 
     for line in theFile: 
      # parse line into filename, say 'target' 
      adj_list[ filename ].add(target) 

Cela vous donnera un dictionnaire de nom de fichier -> fichiers liés par ce fichier.

+0

vous semblez être assez rapide/fréquente replier katrielalex, merci pour cela. Y a-t-il une raison particulière pour utiliser une liste? Maintenant que j'y pense, pourrait-on coder une structure de classe d'une manière similaire? – user428370

+0

bien la réponse est différente pour un, et votre réponse à cette question est arrivé à avoir résolu quelques problèmes. – user428370

+0

@ user428370: La structure globale est ici un graphe orienté. Pour stocker ce graphique, vous avez besoin d'une structure de données pour cela. (Tout comme par exemple un vecteur est un concept mathématique mais il est stocké dans, par exemple, une liste ou un tuple.) Il existe plusieurs structures de données couramment utilisées pour les graphiques; Les deux plus communs sont les listes d'adjacence et les matrices d'adjacence (voir Wikipedia pour plus d'informations). Dans le cas ci-dessus j'ai implémenté une structure de liste d'adjacence en utilisant un dictionnaire d'ensembles Python. – katrielalex

Questions connexes