1

私は ipython ノートブック内での開発を楽しんでいますが、コマンド ライン引数を読み取る main() 関数を書きたいときに問題が発生しています (たとえば、OptionParser を使用)。コードを .py ファイルにエクスポートしてコマンド ラインから実行できるようにしたいのですが、事前定義された引数を使用してノートブックで実行するか、コマンド ラインから実行する main() を使用する方法が見つかりませんでした。 Python およびコマンドライン引数を使用します。秘密は何ですか?

それが明確でない場合、私は次のようなことをしたいと思います:

if __name__ == '__main__':
    # if in the notebook
    vals = {'debug':True, 'tag_file': 't.tags'}
    options = Object()
    for k,v in vals.items():
        options.setattr(k,v)
    args = 'fname1.txt'
    # if running as a command line python script
    from optparse import OptionParser
    parser = OptionParser()
    parser.add_option('-d','--debug',action='store_true',dest='debug')
    parser.add_option('-t','--tags',action='store',dest='tag_file')
    options,args = parser.parse_args()
4

2 に答える 2

1

IPython ノートブック、qtconsole、または単純な IPython シェルにいると判断することはできません。これは、3 つが同時に同じカーネルに接続できるという単純な理由からです。

ユーザーが現在入力しているキーの色を尋ねるようなものです。接続された USB デバイスを探し、インターネットで画像を探し、キーボードの色を推測することで取得できますが、それが正確であること、変更されないこと、ユーザーが複数のキーボードを接続できること、またはさらには塗装済みキーボード。

本当にノートブックと同じです.ZMQKernelにいると判断しても、qtconsoleまたはwebserverに話しかけていますか? 繰り返しますが、Web サーバーと話していることがわかりました。JS または Emacs と話しているのですか? などなど。

あなたができる唯一のことは、ユーザーに尋ねることです。

信頼できるのは、IPython を使用しているかどうかをテストすることです。


どうしても方法が必要な場合は、今までのように、Javascript を表示できるのはノートブックだけです。また、javascript は pyton でコードを実行できます。したがって、情報をカーネルに送り返す JS を表示するものを作成できる場合があります。そして、スレッドとタイマーを使用すると、ノートブックではなかったと言うことができます (ただし、競合状態になります)。

于 2013-06-03T20:33:05.450 に答える
0

区別は気にしないでください。デフォルト値を設定するだけで、コマンドラインから上書きされない限り、それらを使用してください。

if __name__ == '__main__':

    parser = OptionParser()
    parser.add_option('-d', '--debug', action='store_true', dest='debug',
                      default=True)
    parser.add_option('-t','--tags',action='store',dest='tag_file',
                      default='t.tags')
    options, args = parser.parse_args()
    if not args:
        args = ['fname1.txt']
于 2013-06-03T21:28:23.397 に答える