2016-05-18 1 views
1

J'utilise ce script pour parcourir récursivement un répertoire et afficher le contenu du fichier. Cependant, lorsque je tape dans le contenu du fichier, il s'affiche en haut et réimprime la liste entière des fichiers à nouveau. Je veux juste que la liste des chemins de fichier à imprimer une fois et alors l'utilisateur peut ouvrir autant de dossiers qu'ils veulent sans la liste imprimant chaque fois. J'espère que cela a du sens.Python - Comment puis-je voir le contenu du fichier os.walk sans imprimer les chemins de fichier à chaque fois?

import os 
while True: 
    for root, dirs, files in os.walk("/home"): 
     for file in files: 
      print(os.path.join(root, file))  
    fname = raw_input('Enter filepath to view ' 
        '(leave empty to proceed without viewing another file):') 

    if not fname: 
     break 

    f = open(fname, 'r') 
    print f.read() 
+0

Pouvez-vous fixer l'indentation? Je suppose que cela vous révélera le problème. – bgporter

+0

C'était une erreur de publication. C'est correct dans mon script original. Je vais aller de l'avant et le réparer. J'en ai besoin pour travailler sans la première déclaration d'impression où il imprime les chemins mais je ne sais pas comment le faire fonctionner. Je suis nouveau à Python. – kittenparade

Répondre

2

Déplacer l'impression de l'arborescence en dehors de la boucle while:

import os 

for root, dirs, files in os.walk("/home"): 
    for file in files: 
     print(os.path.join(root, file))  

while True: 
    fpath = raw_input('Enter filepath to view ' 
        '(leave empty to proceed without viewing another file):') 

    if not fpath: 
     break 

    with open(fpath, 'r') as f: 
     print f.read() 
+0

"avec open open (fpath, 'r') comme f:" syntaxe invalide – kittenparade

+0

Cela fonctionne. Merci beaucoup! – kittenparade