2015-11-12 2 views
0

Я хочу читать HTML-файлы в python. Normaly Я делаю это так (и это работает):чтение файлов HTML (разных папок)

import codecs 
f = codecs.open("test.html",'r') 
print f.read() 

Проблема в том, что мои HTML файлы не все в той же папке, поскольку есть программа, которая генерирует этот HTML-файлы и сохранить их в папки, которые находятся внутри в папке, где у меня есть мой скрипт для чтения файлов. Подводя итог, у меня есть мой скрипт в папке, и внутри этой папки есть больше папок, где сгенерированные html-файлы.

Кто-нибудь знает, как я могу продолжить?

+0

Есть ли логика в том, как папки сохраняются, что вы могли бы положиться? Будут ли папки вложенными или всего лишь на один уровень? Или вам нужно искать каждую подпапку для любого html-файла? – SuperBiasedMan

ответ

1
import os 
import codecs 

for root, dirs, files in os.walk("./"): 
    for name in files: 
     abs_path = os.path.normpath(root + '/' + name) 
     file_name, file_ext = os.path.splitext(abs_path) 
     if file_ext == '.html': 
      f = codecs.open(abs_path,'r') 
      print f.read() 

Это будет пройти через <script dir>/ (./ будет переводятся на ваш скрипт-каталог) и перебрать все файлы в каждом подкаталоге. Он проверит, есть ли расширение .html и выполните работу над каждым файлом .html.

Возможно, вы определили бы большее количество окончаний файлов, которые являются «принятыми» (например, .htm).

+0

@Pablo мое решение дает вам список папок и файлов, разница в том, что мое решение динамично, поэтому вам не нужно предварительно программировать имена папок и файлов. Я бы предложил использовать 'os.walk', но конечно, вы могли бы использовать 2 списка. – Torxed

0

использование os.walk:

import os,codecs 
for root, dirs, files in os.walk("/mydir"): 
    for file in files: 
     if file.endswith(".html"): 
      f = codecs.open(os.path.join(root, file),'r') 
      print f.read() 
Смежные вопросы