readlines
перебирает весь файл. Затем вы перебираете результат из readlines
. Я думаю, что следующее редактирование сэкономит вам одну итерацию большого файла.
write = True
first_time = True
with open(file_to_copy) as f, open(output, "w") as newf:
for line in f:
if first_time == True:
if stop in line:
first_time = False
write = False
for i in range(300):
newf.write(
'\n -------------------- MIDDLE OF THE FILE -------------------')
print('\n\n')
if restart in line: write = True
if write: newf.write(line)
print('Done.')
Это частая путаница для новых пользователей Приморского региона. Мы изо всех сил старались прояснить это в Seaside 2.9, который в настоящее время находится в Alpha, но я постараюсь сосредоточиться на 2.8 здесь, так как это звучит так, как будто вы используете.
Прежде всего, вы правы, что вы не нужно использовать компонент для доступа к сеансу. Seaside 2.9 перемещает #session
в новый класс WAObject
, который делает его доступным почти для всех объектов Seaside (включая Компоненты), но вы определенно можете обратиться к WACurrentSession
самостоятельно на данный момент в 2.8.
Компоненты предоставляют примерно следующую функциональность в 2.8:
#renderContentOn:
), чтобы разрешить инициализацию на основе запроса, который привел к созданию сеанса #children
), чтобы убедиться, что все компоненты, расположенные ниже, также будут вызывать вышеупомянутые ловушки [] 1212] Возможность добавления украшений #inform:
, #isolate:
и т. Д.) ) Если вам не нужно ничего из вышеперечисленного, вам не нужен компонент. Если вам нужно что-то из вышеперечисленного, вам в значительной степени нужен Компонент, если вы не хотите реализовать эквивалентную функциональность в своем собственном классе.
Вероятно, простейшая метрика: если вы намереваетесь хранить объект между HTTP-запросами, он должен быть Компонентом; если вы намереваетесь выбрасывать объект и создавать его на каждом проходе рендеринга, это, вероятно, не Это должно быть. Если вы представляете приложение, которое отображало страницы блога, у вас, вероятно, были бы Компоненты для меню, рулона блога, тела блога, каждого комментария и так далее. Возможно, вы захотите выделить чтение разметки блога и генерировать его HTML, чтобы вы могли поддерживать разные разметки или разные средства визуализации и чтобы компоненты комментариев могли поддерживать одну и ту же разметку. Это можно сделать с помощью некомпонентного класса, который реализует #renderOn:
и может создаваться и использоваться другими компонентами по мере необходимости.
Приморский участок 2.9 в настоящее время разделяет вышеуказанную функциональность, делая WAPresenter
бетон и введение WAPainter
в качестве его суперкласса. 1-3, описанные выше, реализованы в WAPainter
и 4-7 в WAPresenter
, так что вы можете выбрать, что подклассировать в зависимости от ваших потребностей. Он также удаляет множество методов из WAPresenter и WAComponent, чтобы облегчить их понимание конечными пользователями.
Надеюсь, это поможет.