gpt4 book ai didi

python - 通过 brenda-web 界面将参数传递给 python blender 脚本,如何解析参数?

转载 作者:行者123 更新时间:2023-12-05 07:42:10 24 4
gpt4 key购买 nike

这看起来很容易,但要求在命令中添加“--”,告诉程序将参数传递给脚本(而不是处理它们)。例如:

  $ 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 + value 放在一起,这样我就可以做这样的事情:

args = parser.parse_args()
if args.index:
logging.info("index set to: " + str(args.index))

但我被“ blender :错误:无法识别的参数:”所困扰

编辑----------------------------编辑------------------------

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', '-type', 'AO', '-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)

最佳答案

您可以使用迭代器创建自己的解析器。此代码会将您的参数分成两个字典(在 -- 之前和之后):

args = '-b testscene.blend --python localrender.py -- -start 1 -type diffuse -samples 100'
iter = (i for i in args.split(' '))

args_dict = {'part1': {}, 'part2': {}}
current_part = 'part1'
for chunk in iter:
if chunk == '--':
current_part = 'part2'
continue
if chunk.startswith('-'):
args_dict[current_part][chunk.lstrip('-')] = next(iter)

print(args_dict)

输出:

{'part1': {'b': 'testscene.blend', 'python': 'localrender.py'},
'part2': {'samples': '100', 'start': '1', 'type': 'diffuse'}}

虽然我不太确定你想用这些参数做什么,如果你需要更多帮助,请澄清你的问题。

关于python - 通过 brenda-web 界面将参数传递给 python blender 脚本,如何解析参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44733076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com