これは簡単な作業のようですが、スクリプトに引数を渡し(処理しないように)プログラムに指示するために、コマンドに " - "を追加するという要件があります。たとえば:Brenda-Webインターフェイスを介して引数をPythonブレンダースクリプトに渡すと、引数を解析する方法は?
try:
args = list(reversed(sys.argv))
idx = args.index("--")
except ValueError:
params = []
else:
params = args[:idx][::-1]
print("Script params:", params)
個別にそれらすべてを壊す:
$ blender -b testscene.blend --python localrender.py -- -start 1 -type diffuse -samples 100
私はこれを使用してスクリプトの引数を分離する方法を発見しました。私は何が起こる必要があると思いません。私もargparseを試しましたが、 " - "はそれを壊していると思います。誰もがこのようなものを解析する複雑な方法を知っていますか?
args = parser.parse_args()
if args.index:
logging.info("index set to: " + str(args.index))
しかし、私は「ブレンダー:エラー:認識できない引数:」で立ち往生しています:私はこのような何かを行うことができるように、一緒にargの+値を維持したいと思います
EDIT --- -------------------------- EDIT ---------------------- [ '-items'、 '1'、 '型'、 'AO' は、 '-samples'、 '100'、 '-size'、「1024: - このような構造を作成
I am currently using this to grab the args after "--"
try:
args = list(reversed(sys.argv))
idx = args.index("--")
except ValueError:
params = []
else:
params = args[:idx][::-1]
#print("Script params:", params)
logging.info(params)
']
どうすればいいですか?私はこれが間違った方向に向かっていると思います。私はOption:Argumentでグループ化したいと思っています。 また、私はこのコードを試してみましたが、それは粉々に引数の実際の文字を分割:
try:
#getopt.getopt(sys.argv[1:], 'x:y:')
#opts,val = getopt.getopt(params,"hi:o:",["objindex="])
opts, args = getopt.getopt(params, "h:o")
except getopt.GetoptError:
logging.info('prototype.py --items <items>')
sys.exit(2)
logging.info("params:")
logging.info(params)
logging.info("opts")
logging.info(opts)
exit()
for opt, val in opts:
# print("option" + opt)
if opt in ("--items", "-items"):
objindex = val
elif opt in ("--type", "-type"):
logging.info("found render type: " + val)
[この回答](https://blender.stackexchange.com/a/8405/935)は、必要なものをカバーする必要があります。これには、blenderに含まれるテンプレートへのリンクがあります。 – sambler
リンクをありがとう。私はそれがもともと始まった場所だと思うが、それは "キー:値"のペアとして引数にアクセスするためのソリューションを提供していない。スペースで分割するだけで、すべてのインデックスを作成できます。私は、関係を損なわないものを使用したいと思います。 – Mattehicks
'argv = argv [argv.index(" - ")+ 1:]'行は 'sys.argv'から必要なargsをコピーしています。次に、キーと値のペアを取得するために、['parser.parse_args(argv)'](https://docs.python.org/3/library/argparse.html#parsing-arguments)でそれを使うことができます。 – sambler