WedX - журнал о программировании и компьютерных науках

Как сохранить файл после обработки в python?

Я новичок в питоне. Я начал делать скрипт для обработки файлов HTML с помощью Beautiful Soup. Все обрабатывается правильно, но теперь я хотел бы сохранить статью в новую папку с именем nowe, а не печатать ее. Мне нужно поместить все статьи в одну папку после обработки или сделать один файл CSV.

from bs4 import BeautifulSoup
import glob
import os, os.path


path = '/home/darek/Dokumenty/pliki/'
path_out = '/home/darek/Dokumenty/pliki/nowe'
for filename in glob.glob(os.path.join(path, '*.html',)):
    f = filename
    tresc = open(f)
    soup = BeautifulSoup(tresc, 'html.parser') 
    article = soup.find('div',class_='post')
    tagi = soup.find('div', class_='ph_social_share_box ph_social_share_box_bottom')

    fout = open( +filename, "w")
    fout.close()

print(article)

Мой журнал ошибок:

File "/home/darek/Dokumenty/parser.py", line 21, in <module>
    fout = open( +filename, "w")

TypeError: bad operand type for unary +: 'str'

Это работает для печати

из bs4 import BeautifulSoup import glob import os, os.path

path = '/home/darek/Dokumenty/pliki/'
path_out = '/home/darek/Dokumenty/pliki/nowe'
for filename in glob.glob(os.path.join(path, '*.html',)):
    f = filename
    content = open(f)
    soup = BeautifulSoup(content, 'html.parser') 
    article = soup.find('div',class_='post')
    tags = soup.find('div', class_='ph_social_share_box ph_social_share_box_bottom')


print(article)

Это работает, я не могу записать в файл идею?

17.08.2018

  • filename — это строка. Что вы пытаетесь выразить с помощью +filename? Интерпретатор Python тоже не может понять. 17.08.2018
  • Похоже, вам нужно пройти учебник по работе с файлами. Внутри цикла ваш код открывает filename и тут же закрывает его, ничего не делая с файлом. 17.08.2018
  • Я бы открыл папку с html-файлами после разбора и сохранил в другой. Это моя первая программа, в которой я допускал ошибки. В этот момент, где бы ни была последняя строка, они выводят результат на экран. Как изменить это для сохранения файлов. 17.08.2018
  • Вы пытаетесь запрограммировать несколько шагов, выходящих за рамки ваших текущих возможностей. Опять же, пожалуйста, поработайте с соответствующими учебными пособиями, чтобы улучшить свои способности. Stack Overflow — это архив полезных сообщений с вопросами и ответами, а не общий справочный сайт. 17.08.2018
  • Если вы ищете учебник по файлу Python, вы найдете руководства, которые могут объяснить это намного лучше, чем мы, в ответе здесь. 17.08.2018
  • Я много смотрел, но каждый раз для одного файла txt или одной команды, это не пример для 500 файлов html в подкатегориях. Я знаю, что html не то же самое для python, как txt. Мне нужно что-то вроде загрузки отсюда для имени файла в glob.glob(os.path.join(path, '.html',)): и сохранить в новой папке + 1 или какое-то новое имя в папке 17.08.2018
  • Вы путаете обработку одного файла своей логикой цикла. Учебники научат вас отдельным приемам, и вам все еще нужно набрать скорость при работе с одним файлом. Как только у вас будет столько файлов, вы завернете их в цикл, чтобы обрабатывать множество файлов по порядку. 17.08.2018

Ответы:


1

Удалите "+" в этой строке: fout = open( +filename, "w")

«w» означает: «открыть файл в режиме записи». Если вы добавите к нему «+», например «w+», он начнет запись в файл с самого начала при его открытии. Так что линия должна быть

fout = open(filename, "w+")

17.08.2018
  • я редактирую свой файл, который не работает. такая же ошибка. 17.08.2018

  • 2

    Измените этот блок кода:

    fout = open( +filename, "w")
    fout.close()
    

    Быть таким:

    fout = open( filename, "w")
    fout.write(article) # I assume here that article is what you want to be writing
    fout.close()
    
    tresc.close() # You never closed this, so it was a memory leak
    
    17.08.2018
  • Извините, я не совсем понимаю, что вы пытаетесь сказать. 17.08.2018
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]