Python-beautifulsoup, применить в каждом текстовом файле в папке и создать новый текстовый файл
Я использую следующий код Python - Beautifulsoup для удаления html-элементов из текстового файла:
from bs4 import BeautifulSoup
with open("textFileWithHtml.txt") as markup:
soup = BeautifulSoup(markup.read())
with open("strip_textFileWithHtml.txt", "w") as f:
f.write(soup.get_text().encode('utf-8'))
Вопрос, который у меня есть, заключается в том, как я могу применить этот код к каждому текстовому файлу в папке(каталоге), и для каждого текстового файла создать новый текстовый файл, который обрабатывается и где элементы html и т. д. удаляются, не вызывая функцию для каждого текстового файла?
2 ответов:
Я бы оставил эту работу ОС, просто заменил жестко закодированный входной файл на вход из внешнего источника, в массиве
argv, и вызвал скрипт внутри цикла или с регулярным выражением, которое соответствует многим файлам, например:from bs4 import BeautifulSoup import sys for fi in sys.argv[1:]: with open(fi) as markup: soup = BeautifulSoup(markup.read()) with open("strip_" + fi, "w") as f: f.write(soup.get_text().encode('utf-8'))И запустить его следующим образом:
python script.py *.txt
Модульglob позволяет перечислить все файлы в каталоге:
import glob for path in glob.glob('*.txt'): with open(path) as markup: soup = BeautifulSoup(markup.read()) with open("strip_" + path, "w") as f: f.write(soup.get_text().encode('utf-8'))Если вы хотите также сделать это для каждой подпапки рекурсивно, проверьте os.прогулка
Comments