разбиение на страницы с Python cmd модуль

Попробуй, скажи, работает ли он на тебя.

class Box extends React.Component {
  render() {
    const className = this.props.className;
    const color = this.props.color;
    return (
      <div
        className={className}
        color={color}
        onClick={() => console.log(color)}
      />
    );
  }
}

class App extends React.Component {
  render() {
    return (
      <div>
        <Box className="box1" color="red" />
        <Box className="box2" color="blue" />
        <Box className="box3" color="green" />
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
9
задан Gra 6 February 2009 в 16:21
поделиться

4 ответа

Простая вещь состояла бы в том, чтобы просто передать Ваш сценарий по каналу через "меньше" или подобная команда во времени выполнения.

Вот простой метод, который делает приблизительно, что Вы хотите, хотя:

def print_and_wait(some_long_message):
    lines = some_long_message.split('\n')
    i=0
    while i < len(lines):
        print '\n'.join(lines[i:i+10])
        raw_input("press enter to read more...")
        i += 10

Вы могли также изучить использование проклятий.

5
ответ дан 4 December 2019 в 21:52
поделиться

Как Йони, сказанная выше правильного способа сделать, это должно обеспечить метод печати что страницы автоматически в Вашем выполнении cmd экземпляр. Конструктор Cmd берет stdin и stdout аргументы. Настолько простой обеспечивают объект, который работает как stdout и поддерживает Ваш метод печати подкачки страниц.

class PagingStdOut(object):
    def write(self, buffer, lines_before_pause=40):
        # do magic paging here...
3
ответ дан 4 December 2019 в 21:52
поделиться

Подпрограммы подкачки страниц могут быть найдены в genutils.py файле IPython (см. page, или page_dumb для более простого). Код является немного сложным, но это, вероятно, неизбежно, при попытке быть портативными к системам включая Windows и различные виды эмуляторов терминала.

0
ответ дан 4 December 2019 в 21:52
поделиться

У меня был такой же вопрос. В модуль pydoc встроен пейджер. Я включил его таким образом (что я считаю хакерским и неудовлетворительным ... хотя я открыт для лучших идей).

Мне нравится идея, что он будет запускаться автоматически, если будет больше x результатов и пейджинг включен, что можно реализовать, но не здесь.

import cmd
from pydoc import pager
from cStringIO import StringIO
import sys

PAGER = True
class Commander(cmd.Cmd):
    prompt = "> "
    def do_pager(self,line):
        global PAGER
        line = line + " 1"
        tokens = line.lower().split()
        if tokens[0] in ("on","true","t", "1"):
            PAGER = True
            print "# setting PAGER True"
        elif tokens[0] in ("off","false","f","0"):
            PAGER = False
            print "# setting PAGER False"
        else:
            print "# can't set pager:  don't know -> %s" % tokens[0]

    def do_demo(self,line):
        results = dict(a=1,b=2,c=3)
        self.format_commandline_results(results)

    def format_commandline_results(self,results):
        if PAGER:
            ofh = StringIO()
        else:
            ofh = sys.stdout

        for (k,v) in sorted(results.items()):
            print >> ofh, "%s -> %s" % (k,v)

        if PAGER:
            ofh.seek(0)
            pager(ofh.read())

        return None

    def do_EOF(self,line):
        print "",
        return True

if __name__ == "__main__":
    Commander().cmdloop("# try: \n> pager off \n> demo \n> pager on \n> demo \n\n")
1
ответ дан 4 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

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