Форум сайта python.su
Пытаюсь подгрузить несколько массивов, предварительно законсервировав их в отдельные файлы с помощью pickle. Когда прописывал файлы/переменные вручную было все ОК, а как только попытался сделать тоже через цикл - фейл (+вогнал себя в ступор).
Ниже код:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import pickle #Мои массивы Pole1 = [['Sony', 40], ['Philips', 36]] Pole2 = [['New York', 40], ['Rome', 36]] #Сохраняю массивы Pole1 и Pole2 в отдельные файлы for i in ['Pole1'. 'Pole2']: testOpen = open( i +'.pkl', 'wb') #Пытаюсь создать файлы Pole1.pkl & Pole2.pkl pickle.dump(i, testOpen) #Подгружаю массив по образцу: значение переменной Pole1 в файл Pole1.pkl #Пытаюсь извлечь данные из файлов Pole1.pkl и Pole2.pkl и присвоить им соответсвующие переменные for i in ['Pole1', 'Pole2']: testOpen = open(i + '.pkl', 'rb') i = pickle.load(testOpen) #[size 32]!!![/size]
for i in ['Pole1', 'Pole2']: testOpen = open(i + '.pkl', 'rb') i = pickle.load(testOpen) if i == 'Pole1': Pole1 = pickle.load(testOpen) elif i == 'Pole2': Pole2 = pickle.load(testOpen)
Pole1 = pickle.load(open(Pole1.pkl', 'rb')) Pole2 = pickle.load(open(Pole2.pkl', 'rb'))
Отредактировано oreol (Сен. 16, 2016 13:05:23)
Офлайн
Чтобы динамически создать переменные в цикле можно использовать функцию locals():
for i in ['Pole1', 'Pole2']: with open(i + '.pkl', 'rb') as testOpen: locals()[i] = pickle.load(testOpen)
mydata = {'Pole1' : [1,2,3], 'Pole2': [5,6,7]} with open('mydata.pkl', 'w') as f: pickle.dump(mydata, f) # to load data: with open('mydata.pkl', 'r') as f: data = pickle.load(f) # Finally, we create variables in the local scope for key in data: locals()[key] = data[key]
Отредактировано scidam (Сен. 18, 2016 07:00:03)
Офлайн
Можно так
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import pickle #Мои массивы Pole1 = [['Sony', 40], ['Philips', 36]] Pole2 = [['New York', 40], ['Rome', 36]] #Сохраняю массивы Pole1 и Pole2 в отдельные файлы for i in ['Pole1', 'Pole2']: testOpen = open( i +'.pkl', 'wb') #Пытаюсь создать файлы Pole1.pkl & Pole2.pkl pickle.dump(i, testOpen) #Подгружаю массив по образцу: значение переменной Pole1 в файл Pole1.pkl #Пытаюсь извлечь данные из файлов Pole1.pkl и Pole2.pkl и присвоить им соответсвующие переменные # создаем словарь для хранения данных l = { 1: [], 2: [] } for i in ['Pole1', 'Pole2']: j = ['Pole1', 'Pole2'].index(i) # определяем индекс testOpen = open(i + '.pkl', 'rb') l[j] = pickle.load(testOpen) # сохраняем в словарь по индексу print(l[j])
Офлайн