今天刚刚开始使用Python,所以如果我在这里做疯狂的事情,请告诉我。我一直在努力简化代码块,以便可以更轻松地重用它。我的目标是在每次重用期间仅更新一组变量。我拥有的最后一个工作代码是:
class_a='amstaff'
class_b='beagle'
class_c='doberman'
class_d='germanshepherd'
class_e='rottweiler'
with open(file_path +class_a+'.zip', 'rb') as class_a, open(file_path +class_b+'.zip', 'rb') as class_b, open(file_path +class_c+'.zip', 'rb') as class_c, open(file_path +class_d+'.zip', 'rb') as class_d, open(file_path +class_e+'.zip', 'rb') as class_e:
model = visual_recognition.create_classifier(
classifier_name,
amstaff_positive_examples=class_a,
beagle_positive_examples=class_b,
doberman_positive_examples=class_c,
germanshepherd_positive_examples=class_d,
rottweiler_positive_examples=class_e)
print(json.dumps(model, indent=2))
这使我从原始代码中节省了很多时间,但仍然需要进行一些编辑。所以我以为我可能可以使用for循环,但是我陷入了一半。这是我到目前为止的内容,但是我对如何从这里开始感到困惑。
classes=["amstaff", "beagle", "doberman", "germanshepherd", "rottweiler"]
for x in classes:
with open(file_path +x+'.zip', 'rb') as x:
model = visual_recognition.create_classifier(
classifier_name,
amstaff_positive_examples=class_a,
beagle_positive_examples=class_b,
doberman_positive_examples=class_c,
germanshepherd_positive_examples=class_d,
rottweiler_positive_examples=class_e)
print(json.dumps(model, indent=2))
答案 0 :(得分:1)
如果您使用的是python 3.3
+,则可以使用ExitStack来管理所有上下文管理器。所有打开的文件将在with语句的末尾自动关闭。
classes=["amstaff", "beagle", "doberman", "germanshepherd", "rottweiler"]
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in classes]
files
将具有打开文件的所有句柄,您可以使用这些文件来创建模型。