запись Python представляет в виде строки непосредственно к tarfile

Как подсказывает @marcanuy, я бы положил ваши файлы в каталог _pages. Обязательно добавьте include: ['_pages'] к настройкам вашей сборки в _config.yml

. Теперь вы можете просматривать страницы с помощью {% for page in site.pages %}. Это все еще оставляет проблему получения всех заголовков. Когда я создавал TOC определенного типа в jekyll, я нашел этот фрагмент кода очень полезным. Вы можете использовать элементы оттуда.

Базовая версия того, что вы хотите, будет следующей. Вам придется настроить это на основе вашей настройки, но она должна делать то, что вы хотите. Вы можете поместить это в отдельный HTML-документ в _includes или поместить прямо в вашу панель навигации.


{% for page in site.pages %}

    {% assign headers = page.content | split: '' | first }}>{% endcapture %} {% assign title = _string[0] | replace: _hAttrToStrip, '' %} {% assign _idstring = header | split: 'id="' %} {% assign _idstring = _idstring[1] | split: '"' %} {% assign html_id = _idstring[0] %}
  • {{title}}
  • {% endfor %}
{% endfor %}

Надеюсь, это поможет!

34
задан gatoatigrado 11 April 2009 в 21:41
поделиться

3 ответа

Я бы сказал, что это возможно, играя с TarInfo и TarFile.addfile, передавая StringIO как файловый объект.

Очень грубо, но работает

import tarfile
import StringIO

tar = tarfile.TarFile("test.tar","w")

string = StringIO.StringIO()
string.write("hello")
string.seek(0)
info = tarfile.TarInfo(name="foo")
info.size=len(string.buf)
tar.addfile(tarinfo=info, fileobj=string)

tar.close()
35
ответ дан 27 November 2019 в 16:41
поделиться

Как указал Стефано, вы можете использовать TarFile.addfile и StringIO .

import tarfile, StringIO

data = 'hello, world!'

tarinfo = tarfile.TarInfo('test.txt')
tarinfo.size = len(data)

tar = tarfile.open('test.tar', 'a')
tar.addfile(tarinfo, StringIO.StringIO(data))
tar.close()

Возможно, вы захотите заполнить и другие поля tarinfo (например, mtime , uname и т. Д.).

14
ответ дан 27 November 2019 в 16:41
поделиться

Вы должны использовать объекты TarInfo и метод addfile вместо обычного Добавить метод:

from StringIO import StringIO
from tarfile import open, TarInfo

s = "Hello World!"
ti = TarInfo("test.txt")
ti.size = len(s)

tf = open("testtar.tar", "w")
tf.addfile(ti, StringIO(s))
2
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

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