#python
#питон
Вопрос:
У меня есть скрипт на Python для очистки некоторых URL-адресов. URL-адреса представлены в виде списка в текстовом файле.
Скрипт на Python (только соответствующие части) выглядит следующим образом:
import urllib2
from bs4 import BeautifulSoup
quote_page = 'https://www.example.com/post/1245'
# rest of the code is here
print quote_page
print url
print title
print description
print actors
print director
Я хотел бы запустить этот скрипт для нескольких URL-адресов в текстовом файле и вывести в один текстовый файл.
Есть идеи, как я могу запустить это для своих URL-адресов в текстовом файле?
Ответ №1:
Скорее всего, вы захотите использовать инструкцию Python with (введенную в PEP 343) и встроенную функцию open():
# Python 2
import urllib2
import BeautifulSoup
# Python 3
# import urllib3
# from bs4 import BeautifulSoup
# Python 2.6 and Python 3
with open('urls.txt','r') as url_file, open('output.txt', 'w') as output_file:
url_list = url_file.readlines()
for url_item in url_list:
# quote_page = 'https://www.example.com/post/1245'
quote_page = url_item
# rest of the code is here
# Python 2 and 3
output_file.write(quote_page)
output_file.write(url)
output_file.write(title)
output_file.write(description)
output_file.write(actors)
output_file.write(director)
output_file.write('n')
В этом случае мы:
-
open()
файл обрабатывает (url_file
,output_file
) наши входные и выходные текстовые файлы ('urls.txt'
,'output.txt'
) одновременно (используя'r'
для чтения и'w'
для записи, соответственно). -
Используйте
with
инструкцию, чтобы автоматически закрыть эти файлы после того, как мы полностью обработаем наши URL-адреса. Обычно нам нужно было бы выдавать отдельные команды, например,url_file.close()
иoutput_file.close()
(например, на шаге 5). -
Поместите наши URL-адреса в список (
url_list = url_file.readlines()
). -
Просмотрите наш список URL-адресов и
write()
данные, которые мы хотим добавить в нашoutput_file
. -
close()
оба наших файла автоматически (см. Шаг 2).
Обратите внимание, что для простого добавления данных к существующему, output_file
вы, вероятно, захотите использовать 'a'
(режим добавления), а не 'w'
(режим записи). Так, например, open('output.txt', 'w') as output_file
стало бы open('output.txt', 'a') as output_file
. Это важно, потому что 'w'
(режим записи) приведет к усечению файла, если файл уже существует (т. е. вы потеряете свои исходные данные).