web-dev-qa-db-ja.com

pythonメインのコマンドライン引数、スクリプト名をスキップ

これは私のスクリプトです

_def main(argv):
    if len(sys.argv)>1:
        for x in sys.argv:
            build(x)

if __name__ == "__main__":
    main(sys.argv)
_

コマンドラインから_python myscript.py commandlineargument_と書きます

_myscript.py_をスキップしてcommandlineargumentからcommandlineargument(n)を実行するだけです

私のforループはこれを考慮していないことを理解していますが、どうすればそれを実行できますか?

15
CQM

sys.argv はリストであるため、スライスsys.argv[1:]を使用できます。

def main(argv):
    for x in argv[1:]:
        build(x)

if __name__ == "__main__":
    main(sys.argv)

ただし、スクリプトパラメータを1つしか持てない場合は、インデックスで取得してください:sys.argv[1]。ただし、sys.argvの長さが1より大きいかどうかを確認し、そうでない場合はエラーをスローする必要があります。次に例を示します。

def main(argv):
    if len(argv) == 1:
        print "Not enough arguments"
        return
    else:
        build(argv[1])

if __name__ == "__main__":
    main(sys.argv)
25
alecxe

本当の答えは、argparseについて学び、使用することです。

2
jhermann