Не перекрестный браузер, но я думаю, что это сработает. Должно быть, после загрузки jquery, или вам придется переписать его на простом Javascript.
<script type="text/javascript">
$.each(document.styleSheets, function(i,sheet){
if(sheet.href=='http://code.jquery.com/mobile/1.0b3/jquery.mobile-1.0b3.min.css') {
var rules = sheet.rules ? sheet.rules : sheet.cssRules;
if (rules.length == 0) {
$('<link rel="stylesheet" type="text/css" href="path/to/local/jquery.mobile-1.0b3.min.css" />').appendTo('head');
}
}
})
</script>
Для записи ленивой функции просто используйте yield
:
def read_in_chunks(file_object, chunk_size=1024):
"""Lazy function (generator) to read a file piece by piece.
Default chunk size: 1k."""
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
f = open('really_big_file.dat')
for piece in read_in_chunks(f):
process_data(piece)
<час> Другая опция состояла бы в том, чтобы использовать iter
и функция помощника:
f = open('really_big_file.dat')
def read1k():
return f.read(1024)
for piece in iter(read1k, ''):
process_data(piece)
<час> , Если файл основан на строке, объект файла уже является ленивым генератором строк:
for line in open('really_big_file.dat'):
process_data(line)
, Если Ваш компьютер, ОС и Python 64-разрядные , то можно использовать mmap модуль , чтобы отобразить содержание файла в память и получить доступ к нему с индексами и частями. Здесь пример из документации:
import mmap
with open("hello.txt", "r+") as f:
# memory-map the file, size 0 means whole file
map = mmap.mmap(f.fileno(), 0)
# read content via standard file methods
print map.readline() # prints "Hello Python!"
# read content via slice notation
print map[:5] # prints "Hello"
# update content using slice notation;
# note that new content must have same size
map[6:] = " world!\n"
# ... and read again using standard file methods
map.seek(0)
print map.readline() # prints "Hello world!"
# close the map
map.close()
, Если или Ваш компьютер, ОС или Python 32-разрядные , то mmap-луг большие файлы может зарезервировать значительные части Вашего адресного пространства и , исчерпали ресурсы Ваша программа памяти.
мне не разрешают прокомментировать из-за моей низкой репутации, но решение SilentGhosts должно быть намного легче с file.readlines ([sizehint])
редактирование: SilentGhost является правильным, но это должно быть лучше, чем:
s = ""
for i in xrange(100):
s += file.next()
Обратиться к официальной документации Python https://docs.python.org/zh-cn/3/library/functions.html? #iter
, Возможно, этот метод является большим количеством pythonic:
from functools import partial
"""A file object returned by open() is a iterator with
read method which could specify current read's block size"""
with open('mydata.db', 'r') as f_in:
part_read = partial(f_in.read, 1024*1024)
iterator = iter(part_read, b'')
for index, block in enumerate(iterator, start=1):
block = process_block(block) # process block data
with open(f'{index}.txt', 'w') as f_out:
f_out.write(block)
Я нахожусь в несколько аналогичной ситуации. Не ясно, знаете ли Вы размер блока в байтах; я обычно не делаю, но количество записей (строки), который требуется, известно:
def get_line():
with open('4gb_file') as file:
for i in file:
yield i
lines_required = 100
gen = get_line()
chunk = [i for i, j in zip(gen, range(lines_required))]
Обновление : Спасибо nosklo. Вот то, что я имел в виду. Это почти работает, за исключением того, что это теряет строку 'между' блоками.
chunk = [next(gen) for i in range(lines_required)]
Добивается цели w/o, теряющий любые строки, но это не выглядит очень хорошим.
Это то, что следует контролировать с самого вида. Если вы не хотите изменять каждый вид, вы можете создать элемент управления просмотра пользователя (файлы .ascx) и добавить его на главную страницу.
-121--4746471- File.Readlines ()
принимает дополнительный аргумент размера, который приближается к количеству строк, чьимых в строках, возвращаемых.
bigfile = open('bigfilename','r')
tmp_lines = bigfile.readlines(BUF_SIZE)
while tmp_lines:
process([line for line in tmp_lines])
tmp_lines = bigfile.readlines(BUF_SIZE)