import pprint pprint.pprint(list(chunks(range(10, 75), 10))) [range(10, 20), range(20, 30), range(30, 40), range(40, 50), range(50, 60), range(60, 70), range(70, 75)]
Сопоставьте результат этой реализации с примером результата использования принятого ответа . sup>
Многие из вышеперечисленных функций предполагают, что длина всей итерируемой заранее известна или, по крайней мере, является дешевой для вычисления.
Для некоторых потоковых объектов это означало бы сначала загрузку полных данных в память (например, загрузку всего файла) для получения информации о длине.
Если вы еще не знаете полный размер, вы можете использовать этот код вместо этого:
def chunks(iterable, size):
"""
Yield successive chunks from iterable, being `size` long.
https://stackoverflow.com/a/55776536/3423324
:param iterable: The object you want to split into pieces.
:param size: The size each of the resulting pieces should have.
"""
i = 0
while True:
sliced = iterable[i:i + size]
if len(sliced) == 0:
# to suppress stuff like `range(max, max)`.
break
# end if
yield sliced
if len(sliced) < size:
# our slice is not the full length, so we must have passed the end of the iterator
break
# end if
i += size # so we start the next chunk at the right place.
# end while
# end def
Это работает, потому что команда slice вернет меньше / нет элементов, если вы передали конец итерируемый:
"abc"[0:2] == 'ab'
"abc"[2:4] == 'c'
"abc"[4:6] == ''
Теперь мы используем этот результат среза и вычисляем длину этого сгенерированного фрагмента. Если это меньше, чем мы ожидаем, мы знаем, что можем закончить итерацию.
Таким образом, итератор не будет выполняться без доступа.
Проблема заключалась в разрешениях. Несмотря на то, что при создании веб-сайта IIS7 я сказал ему получить доступ к файлам как мой пользователь (в противном случае он не работал бы вообще), для статического файла он использовал пользователя пула приложений. Предоставление доступа к IIS APPPOOL \ MyApplication к папке, в которой мой проект был исправлен.
Попробуйте перейти на http: // localhost: 8080 /../ .. /Content/Site.css, не уверен, соответствует ли ваш исходный URL маршруту.
Хотя это не совсем вопрос программирования.
Как насчет
routes.RouteExistingFiles = true;
в вашем Global.asax?