16

私は本質的にこれを達成しようとしています:

>>>print "SOME_VERY_LONG_TEXT" | more

もちろん、Python 2.7(IDLE)では動作しません。

また、 pager 1.2の機能を試しpage()ましたが、正しく機能させる方法がわかりません。

何か案は?

[アップデート]

私は次のように怠惰な方法を見つけました:

import pydoc
pydoc.pager("SOME_VERY_LONG_TEXT") 
4

3 に答える 3

3

少し遅れましたが、次のことがうまくいきました。

def less(data):
    process = Popen(["less"], stdin=PIPE)

    try:
        process.stdin.write(data)
        process.communicate()
    except IOError as e:
        pass
于 2016-09-20T07:11:14.627 に答える
3

外部プロセスとして呼び出すことができます。(ただし、注意が必要ですshell=True。)

import subprocess
longStr = 'lots of text here'
subprocess.call(['echo "'+longStr+'" | more'], shell=True)
于 2012-11-05T07:19:19.453 に答える
2

何か端末やOSに依存しないものを書くことは、より大きな仕事かもしれません。

ただし、端末の高さを取得できる場合は、次のようなものを使用できます。入力が行区切りテキストのジェネレーター/リストであると仮定するか、この関数を呼び出す前にtext.split('\ n')を呼び出すことができます。

def pagetext(text_lined, num_lines=25):
   for index,line in enumerate(text_lined):
       if index % num_lines == 0 and index:
           input=raw_input("Hit any key to continue press q to quit")
           if input.lower() == 'q':
               break
       else:
           print line

また、pypyにはまだ使用されていないページャーモジュールがありますが、作者はそれが標準ライブラリに含まれているはずだったと言います。

于 2012-11-05T07:39:24.643 に答える