AttributeError: у объекта 'str' нет атрибута 'items'; Попытка выполнить итерацию для l oop in python - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь адаптировать скрипт из GitHub , чтобы избавиться от некоторых ошибок, которые я получаю. До сих пор я в основном менял каталоги. Я только что столкнулся с этой ошибкой и не могу найти решение для моей конкретной проблемы. Вот полный вывод консоли:

    Blender 2.81 (sub 16) (hash 26bd5ebd42e3 built 2019-11-20 16:31:09)
/run/user/1000/gvfs/ non-existent directory
Read prefs: /home/blender/.config/blender/2.81/config/userpref.blend
found bundled python: /usr/local/blender-2.81-linux-glibc217-x86_64/2.81/python
Traceback (most recent call last):
  File "/usr/local/blender-2.81-linux-glibc217-x86_64/generate_classification_data.py", line 33, in <module>
    image_generator.render()
  File "/usr/local/blender-2.81-linux-glibc217-x86_64/utils/image_classifier_generator.py", line 74, in render
    for class_name, model_path in self.data.items():
AttributeError: 'str' object has no attribute 'items'

Blender quit

Вот код, на который он указывает:

    def render(self):
        self.set_render_properties()
        for class_name, model_path in self.data.items():
            print(class_name, model_path)
            for num_images_rendered in range(self.num_images_per_class):
                obj = self.construct_scene(model_path, class_name)
                box_coordinates = get_image_bounding_box(obj)
                image_name = self.make_image_name(
                        class_name, num_images_rendered, box_coordinates)
                render_image(image_name)
                delete_scene(self.blender_save_path)
                ".self.data.items()"

имя_класса - это массив, созданный из shapenet_data_manager.py, другой файл, используемый в сценарий. Я не могу найти любую другую ссылку на "model_path", в том числе, где он был объявлен. То, что я пытаюсь сделать, - это создавать изображения с помощью рандомизации домена, так что я немного не в своей тарелке, что касается python. Спасибо за всю помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 03 апреля 2020

Как сказал @hpaulj, items - это метод словаря, а self.data - строка. Вам нужно выяснить, где self.data устанавливается в строку.

Я бы начал с поиска всех мест, где установлено self.data, либо внутри объекта, либо снаружи объекта, напечатав self.data и посмотрите, что это такое.

Пожалуйста, обновите свой ответ и оставьте комментарий здесь, если у вас есть еще вопросы :) Удачи!

...