Python - Как остановить цикл

У меня есть это, где он читает файл с именем source1.html, source2.html, source3.html, но когда он не может найти следующий файл (потому что его нет), он выдает мне ошибку. может быть x количество sourceX.html, поэтому мне нужно что-то сказать, если следующий файл sourcex.html не может быть найден, остановите цикл.

  

Traceback (последний вызов был последним): файл "main.py", строка 14, в    file = open (filename, "r") IOError: [Errno 2] Нет такого файла или   каталог: 'source4.html

как я могу остановить скрипт, ищущий следующий исходный файл?

from bs4 import BeautifulSoup
import re
import os.path

n = 1
filename = "source" + str(n) + ".html"
savefile = open('OUTPUT.csv', 'w')

while os.path.isfile(filename):

    strjpgs = "Extracted Layers: \n \n"
    filename = "source" + str(n) + ".html"
    n = n + 1
    file = open(filename, "r")
    soup = BeautifulSoup(file, "html.parser")
    thedata = soup.find("div", class_="cplayer")
    strdata = str(thedata)
    DoRegEx = re.compile('/([^/]+)\.jpg')
    jpgs = DoRegEx.findall(strdata)
    strjpgs = strjpgs + "\n".join(jpgs) + "\n \n"
    savefile.write(filename + '\n')
    savefile.write(strjpgs)

    print(filename)
    print(strjpgs)

savefile.close()
print "done"
4 голоса | спросил Chagger 11 Maypm18 2018, 13:06:43

4 ответа


0
вы можете ---- +: = 0 =: + ---- открыть файл и ---- +: = 1 =: + ---- из цикла while, как только вы поймете ---- +:= 2 =: + ---- исключение.
ответил Ali Yılmaz 11 Maypm18 2018, 13:09:43
0
используйте ---- +: = 0 =: + ---- и ---- +: = 1 =: + ----Причина, по которой ваш код в настоящее время не работает, заключается в том, что вы проверяете, существует ли предыдущий файл в цикле while.Не следующий.Следовательно, вы также можете сделать
ответил FHTMitchell 11 Maypm18 2018, 13:09:35
0
Я предлагаю вам использовать os.path.exists () ---- +: = 0 =: + ---- и os.path.isfile () оба.Используйте с заявлением, чтобы открыть файл.Это Pythonic способ открывать файлы.с утверждением лучше всего подходит среди профессиональных кодеров.Это содержимое моего текущего рабочего каталога.Приведенный ниже код Python показывает, как вы будете читать файлы source1.html, source2.html, source.3.html и останавливаться, если больше нет файлов вида sourceX.html (где X - 1, 2, 3, 4,... и т.д.).Образец кода:Выход:Итак, исходя из приведенной выше логики.Вы можете изменить свой код.Это будет работать.Благодарю.
ответил hygull 11 Maypm18 2018, 13:57:37
0
Это кажется ошибкой последовательности.Давайте рассмотрим небольшой фрагмент вашего кода, в частности, строки, связанные с ---- +: = 0 =: + ---- :Вы генерируете следующее имя файла перед тем, как открыть файл (или действительно, проверяете старое имя файла, а затем открываете новое).Это немного трудно увидеть, потому что вы действительно обновляете ---- +: = 2 =: + ----, а ---- +: = 3 =: + ---- содержит предыдущее число, но еслимы смотрим на них в последовательности, она выскакивает:Мы можем исправить это несколькими способами.Один из них - переместить все обновление, ---- +: = 5 =: + ---- до ---- +: = 6 =: + ---- , в конец цикла.Другой способ - позволить механизму цикла обновляться ---- +: = 7 =: + ---- , что намного проще (реальное исправление здесь заключается в том, что мы используем только один ---- +: = 8 =:+ ---- значение в каждой итерации цикла):С риском выглядеть неясным, мы также можем выразить шаги функционально (здесь я использую шесть, чтобы избежать различий между Python 2 и 3; карта Python 2 не закончится):Другие варианты включают в себя итерацию только по числам и использование ---- +: = 11 =: + ---- когда ---- +: = 12 =: + ---- возвращает ---- +: = 13=: + ---- или просто перехватывает исключение, когда ---- +: = 14 =: + ---- терпит неудачу (устраняя необходимость в ---- +: = 15 =: + ----целиком).
ответил Yann Vernier 11 Maypm18 2018, 13:42:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132