44

コマンドライン入力を解析する python コードをテストしています。この入力を IDLE 経由で渡す方法はありますか? 現在、IDLE エディターで保存し、コマンド プロンプトから実行しています。

私はWindowsを実行しています。

4

12 に答える 12

34

IDLE が GUI を介してこれを行う方法を提供しているようには見えませんが、次のようなことができます。

idle.py -r scriptname.py arg1 arg2 arg3

sys.argv次のように手動で設定することもできます。

try:
    __file__
except:
    sys.argv = [sys.argv[0], 'argument1', 'argument2', 'argument2']

(クレジットhttp://wayneandlayne.com/2009/04/14/using-command-line-arguments-in-python-in-idle/ )

于 2010-01-27T17:37:14.817 に答える
11

ピンチでは、セスの#2が機能しました....

2) 引数の配列を提供するメイン関数呼び出しの前にテスト行を追加する (または同じことを行う単体テストを作成する) か、sys.argv を直接設定することができます。

例えば...

sys.argv = ["wordcount.py", "--count", "small.txt"]
于 2014-06-16T05:00:50.767 に答える
6

ここに私が考えることができるいくつかの方法があります:

1) 必要に応じて、引数を使用して IDLE コンソールで「メイン」関数を直接呼び出すことができます。

2) 引数の配列を提供するメイン関数呼び出しの前にテスト行を追加する (または同じことを行う単体テストを作成する) か、sys.argv を直接設定することができます。

3) コンソールで対話モードで python を実行し、引数を渡すことができます。

C:\> python.exe -i some.py arg1 arg2
于 2010-01-27T17:38:54.113 に答える
2

danben の投稿に基づいて、IDLE で動作する私のソリューションを次に示します。

try:  
    sys.argv = ['fibo3_5.py', '30']  
    fibonacci(int(sys.argv[1]))  
except:  
    print(str('Then try some other way.'))  
于 2016-06-11T23:12:20.343 に答える
1

このコードは私にとってはうまく機能します。IDLEで「F5」を使用して、インタラクティブプロンプトから再度呼び出すことができます。

def mainf(*m_args):
    # Overrides argv when testing (interactive or below)
    if m_args:
        sys.argv = ["testing mainf"] + list(m_args)

..。

if __name__ == "__main__":
    if False: # not testing?
        sys.exit(mainf())
    else:
        # Test/sample invocations (can test multiple in one run)
        mainf("--foo=bar1", "--option2=val2")
        mainf("--foo=bar2")
于 2013-02-20T10:54:45.737 に答える
0

veganaiZe からの回答は、Python 3.6.3 で IDLE 外で KeyError を生成します。if sys.modules['idlelib']:これは、以下のように置き換えることで解決できif 'idlelib' in sys.modules:ます。

import argparse
# Check if we are using IDLE
if 'idlelib' in sys.modules:
    # IDLE is present ==> we are in test mode
    print("""====== TEST MODE =======""")
    args = parser.parse_args([list of args])
else:
    # It's command line, this is production mode.
    args = parser.parse_args()
于 2018-08-29T16:52:55.460 に答える