0

私はPythonパイピングにまったく慣れていませんが、それが私の問題に対する答えだと思います. raw_input から無限の入力を取得し、結果をコマンド ラインに出力する、cleverbot.py ファイルがあります。これはずっと while ループにとどまっている間に行われ、「さようなら」と言うとスクリプトは終了します。

さて、ループを終了することなく、入力をこのスクリプトにパイプしてから出力を受け取ることができる例を誰か教えてもらえますか? ループはセッションとして機能し、スクリプトがこの while ループ内で常に実行され続け、入力をパイプに渡すことができることが重要です。

コードのスニペットを次に示します。完全なものを入手したい人は、pycleverbot ライブラリを使用してください。

def main():
    import sys
    cb = Session()

    q = ''
    while q != 'bye':
            try:
                    q = raw_input("> ")
            except KeyboardInterrupt:
                    print
                    sys.exit()
            print cb.Ask(q)

cb = Session() は、最初に作成した後はまったく再作成できません。そのため、while ループが配置されています。while ループを使用しない方法を確認するために必要なロジックが不足しています。

これが理にかなっていることを願っています、ありがとう。

4

1 に答える 1

1

コツは、そもそも while ループを使用しないことです。

for line in sys.stdin:
  if line.lower().strip() == 'bye':
    break
  sys.stdout.write(do_something(line))
  sys.stdout.flush()
于 2012-06-29T18:31:21.693 に答える