0

私はpython初心者です。わかりやすい方法で質問するために、2 つのスクリプトを作成しました。1 つのスクリプトの名前は次のとおりです: called_script.py もう 1 つのスクリプトの名前は次のとおりです: calling_script.py

次の 2 行は、 called_script.py 内のコードです。

 import sys
 print str(sys.argv[1]) + '\n\n' + str(dir(sys.argv[1]))

次の 2 行は、calling_script.py 内のコードです。

 import sys
 import called_script

「calling_script.py」のコマンド ライン引数として「foo」を入力すると、foo は「calling_script.py」の sys.argv[1] として表示されます。

sys.argv[1] がコマンド ラインから渡されたかどうか、または sys.argv[1] がそれは「メイン」からですか?

また、たとえば sys.argv[1] がメインからインポートされたモジュールに渡されるのを防ぐことができるかどうか、およびこのトピックに関する読み物をどこで見つけることができるかを知りたいです。

助けてくれてありがとう。大変感謝しております。

                      Marc
4

1 に答える 1

1

sys.argv[1] がコマンド ラインから渡されたかどうか、または sys.argv[1] が「メイン」からですか?

コマンドライン引数はmodulesに渡されないため、Python に渡され、Python はそれらを に入れますsys.argv。すべてのモジュールが同じ を共有しているため、すべて同じ がsys表示sys.argvされます。それだけです。

つまり、メイン スクリプトのみに__name__設定されている を利用できます。__main__

~/coding$ python calling_script.py fred
called_script says __name__ is: called_script
calling_script says __name__ is: __main__

したがって、次のようなものを使用できます

args = sys.argv if __name__ == '__main__' else [whatever_you_want]

次にargs、モジュール固有の同等のものを取得するために使用しますsys.argv。同様に、 stash__name__の先頭で分岐し、 (ick)内のものを変更できます。calling_script.pysys.argvsys

sys.argvしかし、一般的に言えば、とにかくメイン プログラム以外の場所で使用する必要はありません。複数の場所にアクセスする必要がある場合sys.argv、インターフェイスがルーチンから十分に分離されていない可能性があります。

于 2012-07-29T02:06:36.343 に答える