2016-05-18 4 views
1

Я использую этот скрипт, чтобы рекурсивно пройти через каталог и просмотреть содержимое файла. Однако, когда я печатаю содержимое файла, он отображается вверху и снова перепечатывает весь список файлов. Я просто хочу, чтобы список путей к файлам печатался один раз, а затем пользователь может открывать столько файлов, сколько захочет, без печати списка каждый раз. Надеюсь, это имеет смысл.Python- Как просмотреть содержимое файла os.walk без печати путей к файлам каждый раз?

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

Можно ли исправить отступы? Я подозреваю, что это покажет вам эту проблему. – bgporter

+0

Это была ошибка при публикации. Это правильно в моем оригинальном скрипте. Я пойду дальше и исправлю это. Мне нужно, чтобы он работал без первого оператора печати, где он печатает пути, но я не знаю, как заставить его работать. Я новичок в Python. – kittenparade

ответ

2

Перемещение печати дерева каталогов за пределами цикла 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

"с открытым открытым (fpath, 'r') как f:" Недействительный синтаксис – kittenparade

+0

Он работает. Большое спасибо! – kittenparade