3

次のような単純なpythonスクリプト(たとえば、simple.py)があります

a = 5
b = a + a
print(b)

しかし、私は次のことを望んでいます:これらのコマンドがインタープリターで実行されたかのように結果を出力します。

>>> a = 5
>>> b = a + a
>>> print(b)
10

そして、私はこれをstdoutに入れたい:)簡単な方法でそれは可能ですか?IPython についても同じ質問です。この質問は、Python/IPython インタープリターを操作するための小さな「ハウツー」を書くのに役立ちます。

4

4 に答える 4

3

このステートメントを使用してexecコード行を実行できます (以下は Python 2 コードですprint()。Python 3 にする場合は、print ステートメントを次のように変更します)。

import sys

def run(filename):
    with open(filename) as f:
        for line in f:
            print ">>> ", line
            exec line

if __name__ == "__main__":
    try:
        run(sys.argv[1])
    except KeyError:
        print "You should pass one filename as parameter."

複数行のステートメントをまだうまく処理していないように見えることに注意してください (各行を個別に評価しているため)。

于 2012-06-18T07:47:10.157 に答える
2

@Simeonのコードから変更しました。

以下のコードをtheprinter.pyとして保存します

import sys
if __name__ == '__main__':
    c = {}
    for line in sys.stdin:
        sys.stdout.write('>>> %s' % line)
        exec(line, c)

使用法:cat yourscript.py | python theprinter.py

于 2012-06-18T09:33:47.530 に答える
1

ハウツーを作成するために使用しているツールによっては、Pythonでドキュメントを作成するためのツールであるSphinxを使用することもできます。それは多くのフォーマット、特にHTMLとPDFを出力することができます。それはあなたのドキュメンテーションにPython命令を入れることを可能にするとても素晴らしいdoctestモジュールを持っています。これらは、ドキュメントをコンパイルするときに実行され、手順とその結果が表示されます。

于 2012-06-18T07:51:42.173 に答える
0

これは、Pythonシェルをインタラクティブに埋め込んで使用するための良いスタートになるはずです(ActiveStateコードレシピ)。

IPythonの場合、おそらくIPShellEmbedを使用できます。

于 2012-06-18T07:50:44.123 に答える