2016-12-22 2 views
0

J'ai environ 100 dossiers avec des noms aléatoires, disons pour cet exemple 1,2,3,4 , ... 100. Dans ces dossiers, j'ai des fichiers texte avec des chaînes. par exemple: sample.txt.Lire un fichier texte à partir d'un dossier et enregistrer le nom du dossier si une chaîne particulière est trouvée dans le fichier texte - Python

Les fichiers texte ont tous le même nom mais se trouvent dans des dossiers différents. Ce dont j'ai besoin est de lire les fichiers à l'intérieur de ces dossiers, et lire le texte à l'intérieur de ces fichiers et imprimer ou enregistrer l'emplacement de ces fichiers texte.

Je ne sais comment lire les lignes d'un fichier que s'il est dans mon fichier pwd et y chercher des informations. J'utilise le code suivant pour que:

with open(r'Example.txt', 'r') as infile_txt: 
    for line in infile_txt: 
     if r"sample" in line: 
      print line 

Comment puis-je lire les fichiers de dossiers à l'intérieur et d'enregistrer les noms de ces dossiers?

Répondre

1

Vous pouvez utiliser os pour cela. Par exemple:

import os 
list_downloads = os.listdir("C:/Users/user/Downloads") 

Cela vous donnera tous les sous-dossiers et les fichiers dans une liste. Vous pouvez ensuite parcourir la liste pour trouver le sous-dossier nécessaire et répéter l'action.

+0

Merci. Je n'étais pas sûr de l'importation et du format. Cela a aidé à coup sûr. –

0
import os 
import re 
from os.path import join, getsize 

with open('output.txt','w') as out_file: 
    for root,subFolders, files in os.walk(r"C:\Users\USER007\Desktop\Python Scripts\Reading metadata\files"): 
     if r'MetaData.txt' in files: 
      with open(os.path.join(root, 'MetaData.txt'), 'r') as in_file: 
       for lines in in_file: 
        if r'THIS' and r'THAT' and r'THOSE' in lines: 
         print root 

Le code ci-dessus a fonctionné pour moi.