Мне сказали, что использование exec - очень плохая вещь.Python - заменить exec для создания динамической переменной
Однако я новичок в python и пытаюсь выяснить, как динамически создавать кучу глобальных переменных (я знаю, что это также должно быть Bad Thing, но давайте сжечь один мост за раз , А не ___ ли нам?).
Что это такое: получить список текущих переменных, которые необходимо создать (в настоящее время находится в CSV), получить уникальные идентификаторы в этом списке, а затем создать необходимые объекты, добавив идентификатор к имени и считывая содержимое другого CSV.
import pandas as pd
def importtest():
ilist = pd.read_csv('Z:/fakepath/ID.csv')
for i in range(0, len(ilist['ID'].unique())):
tempID = ilist['ID'].unique()[i]
exec("variable%s = pd.read_csv('%s')" % (
str(tempID), 'Z:/fakepath/'+str(tempID)+'.csv'), globals())
i = i + 1
Есть еще один/лучший способ для динамического создания/обновления переменных, мне нужно, чтобы они появляются в глобальном масштабе?
Как вы, кажется, чтобы быть в курсе, что это не хорошая идея. почему ты хочешь сделать это? Просто создайте глобальный словарь под названием 'variable', а затем выполните' variable [tempID] = whatever'. Какая у вас проблема, которая не решает? – BrenBarn
Похоже, это решает обе мои проблемы. Благодаря! –
@BrenBarn, может также написать это как ответ, чтобы исходный плакат мог отметить его правильно. Несколько второстепенных комментариев - я не думаю, что вам нужна строка 'i = i + 1', так как ваш' i' уже завершает цикл. Кроме того, я думаю, что было бы чище писать 'для temp_id в ilist ['ID']. Unique():' вместо создания индекса. Значения id - это все, о чем вы действительно заботитесь, поэтому просто перебирайте их. – dslack