這似乎是一件容易的事情,但要求在命令中添加「 - 」,以告訴程序將參數傳遞給腳本(而不是處理它們)。例如:通過brenda-web界面將參數傳遞給python攪拌器腳本,我如何解析參數?
$ blender -b testscene.blend --python localrender.py -- -start 1 -type diffuse -samples 100
我找到了一種方法,通過使用這種分離出腳本參數:其分別打破它們加起來
try:
args = list(reversed(sys.argv))
idx = args.index("--")
except ValueError:
params = []
else:
params = args[:idx][::-1]
print("Script params:", params)
。這不是我認爲需要發生的事情。我也嘗試過argparse,但我認爲「 - 」正在打破它。有沒有人知道解析這些東西的複雜方法?我想保持ARG +價值在一起,這樣我可以做這樣的事情:
args = parser.parse_args()
if args.index:
logging.info("index set to: " + str(args.index))
但我堅持「攪拌機:錯誤:無法識別的論點:」
編輯--- -------------------------- 編輯---------------------- -
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)
這產生這樣的結構: [ '-items', '1', '型', 'A0', '-samples', '100', '-size',「1024 ']
我該怎麼辦?我認爲這是錯誤的方向,因爲我想按照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)
[This answer](https://blender.stackexchange.com/a/8405/935)應該涵蓋你想要的。請注意,它有一個鏈接到攪拌機附帶的模板。 – sambler
感謝您的鏈接。我認爲這就是我最初開始的地方,但它並不提供以「key:value」作爲參數訪問參數的解決方案。它更多的是在空間分裂,並索引它。我想用一些可以保持關係完好的東西。 – Mattehicks
注意'argv = argv [argv.index(「 - 」)+ 1:]'這行'從'sys.argv'複製了你想要的參數。然後你可以在['parser.parse_args(argv)'](https://docs.python.org/3/library/argparse.html#parsing-arguments)中使用它來獲得鍵值對。 – sambler