コマンドラインからPythonのために配列を渡すどうやってのpythonに配列を渡すためにしようとしています
import sys
arr = sys.argv[1]
print(arr[2])
私のコマンドは
python3 test.py [1,2,3,4,5] 0
が、私は結果を期待していること
2
ただし、
,
コマンドラインからPythonのために配列を渡すどうやってのpythonに配列を渡すためにしようとしています
import sys
arr = sys.argv[1]
print(arr[2])
私のコマンドは
python3 test.py [1,2,3,4,5] 0
が、私は結果を期待していること
2
ただし、
,
([3] ARR)argv
の要素が文字列であるが、それらはプログラム中のリテラルのように解析されていません。
ちょうど(括弧なし)カンマで区切られた文字列を渡す必要があります。次に
python3 test.py 1,2,3,4,5 0
アレイに変換するsplit()
を使用します。
import sys
arr = sys.argv[1].split(',')
print(arr[2])
コマンドライン引数は文字列です。整数から偶数を文字列からint
に変換する必要があります。あなたの例に示すリスト構文を使用する場合は、ある種のパーサー(独自のパーサー、ast
、またはeval
から何かを実行する必要がありますが、eval
は使用しないでください)。しかし、もっと簡単な方法があります:引数を別々に書いて、スライスをsys.argv
としてあなたのリストにしてください。複数の引数をコマンドラインプログラム(例えば、複数のファイル名をless
,rm
など)に渡す標準的な方法は、スペースで区切られた引数です。
-n
)を持つ引数を識別し、スキップしたい
python3 test.py -n a b c 1 2 3
まず、単に休息を保つ:
arr = sys.argv[2:]
print(arr[3]) # Prints "1"
PS。特別な意味を持つ文字(*
、;
、引数の一部であるスペースなど)を引用することによって、シェルからの引数を保護する必要もあります。しかしそれは別の問題です。
別の類似の回答http://stackoverflow.com/questions/7605631/passing-a-list-to-python-from-command-line – mgilbert
'[1,2,3,4,5]'はファイル名ですグロビングパターン。名前が1〜5またはカンマの1文字であるファイル名に一致します。 – Barmar
スクリプトのリテラル引数として使用する場合は、引用符で囲む必要があります。 – Barmar