python3 ошибка расщепления во второй итерации цикла for - PullRequest
1 голос
/ 16 апреля 2020

Я получаю странную ошибку при распаковке файлов для l oop (python v3.6.8, pickle v4.0). Я создал класс, засолил некоторые из этих объектов класса и получил список имен файлов для засоленных объектов files = [str_file1, str_file2, ...]. Я хочу, чтобы открыть и раскрыть каждый из них в течение 1 oop.

<class definition for objects>
for fn in files:
   f = open(fn,'rb')
   object = pickle.load(f)
   f.close()
   <do some computation on the loaded object>

Это прекрасно работает для первой итерации l oop, но на второй итерации выдает: _pickle.UnpicklingError: NEWOBJ class argument isn't a type object. После прочтения кажется, что эта ошибка чаще всего выдается, когда класс, который вы выбираете, не определен. Но, похоже, в этом случае это не так, поскольку он отлично работает на первой итерации l oop. Чтобы убедиться, что проблема не была указана c ко второму файлу (например, он поврежден и т. Д. c.), Я запустил:

<class definition for objects>
for fn in files[1:]:
   f = open(fn,'rb')
   object = pickle.load(f)
   f.close()
   <do some computation on the loaded object>

и снова, он отлично работает на первая l oop итерация (файл, в котором она не работала в предыдущем случае), но выдает ту же ошибку на второй итерации. Мне это кажется довольно странным, но я что-то упускаю из виду?

...