Какой код наиболее эффективен / меньше для использования data[attach.]
.json из этого кода:
with open('slack.json') as slackAttachment:
data = json.load(slackAttachment)
with open('slack2.json') as slackAttachment:
data2 = json.load(slackAttachment)
with open('slack3.json') as slackAttachment:
data3 = json.load(slackAttachment)
with open('slack4.json') as slackAttachment:
data4 = json.load(slackAttachment)
data["attachments"][0]["title"] = country
itemname = item.get('Title', {})
if itemname:
newitemword = item['seoTitle']
data["attachments"][0]["text"] = "" + newitemword + ""
else:
data["attachments"][0]["fields"].append({
"value": '*Item name not found*',
"short": True,
})
Также есть не только эти два файла данных ["вложения"] [0], но и около xx из них.
В основном то, что я НЕ хочу делать, это:
data["attachments"][0]["text"] = "" + newitemword + ""
data2["attachments"][0]["text"] = "" + newitemword + ""
data3["attachments"][0]["text"] = "" + newitemword + ""
data4["attachments"][0]["text"] = "" + newitemword + ""
и мне интересно, есть ли другой эффективный способ решить эту проблему с меньшим количеством кода, чем приведенный выше, и при этом иметь возможность использовать все эти slacks.json самостоятельно?
Обновлено:
webhook0 = 'HELLO'
webhook1 = 'WORLD
webhook2 = 'STACK'
data = {}
file_numbers = range(0, 3) # I assume the numbers are from 1 to 4, but you can change this.
for file_number in file_numbers: # go overf file numbers
file_name = 'slack' + str(file_number) + '.json' # create file name from number
with open(file_name) as slackAttachment:
data[file_number] = (json.load(slackAttachment)) # append file json to data list
webhook_number = 'webhook' + str(file_number)
print(webhook_number)
# data is now complete
# you can use data[file_number] to access the corresponding json
for file_number in file_numbers:
Вы можете хранить все свои данные на одном dict
.
data = {}
file_numbers = range(1, 5) # I assume the numbers are from 1 to 4, but you can change this.
for file_number in file_numbers: # go overf file numbers
file_name = 'slack' + str(file_number) + '.json' # create file name from number
with open(file_name) as slackAttachment:
data[file_number] = (json.load(slackAttachment)) # append file json to data list
# data is now complete
# you can use data[file_number] to access the corresponding json
for file_number in file_numbers:
data[file_number]["attachments"][0]["title"] = country
itemname = item.get('Title', {})
if itemname:
newitemword = item['seoTitle']
data[file_number]["attachments"][0]["text"] = "" + newitemword + ""
else:
data[file_number]["attachments"][0]["fields"].append({
"value": '*Item name not found*',
"short": True,
})
каждый раз, когда вы хотите получить доступ к данным файла, вы используете data[<file_number>]
.
Итак, чтобы получить доступ к первому slack.json
, вы используете data[0]
Также написано range() does not take keyword arguments
какую версию Python вы используете?
Пользуюсь 3.6 :)
Также я забыл упомянуть, что в конце есть response = s.post(webhook, data=json.dumps(data), headers = {'Content-Type': 'application/json'})
. Как мне изменить данные в этом случае, чтобы отправлять каждый конкретный запрос?
Я отредактировал ассортимент, теперь надо работать. Везде, где у вас есть data
, используйте вместо него data[file number]
. Итак, response = s.post(webhook, data=json.dumps(data[file number]), headers = {'Content-Type': 'application/json'})
Ой, ладно! Я попробую :)
Кажется, работает! Однако это та же проблема, где у меня теперь есть 3 разных веб-крючка вверху и т. д. Webhook0 = hello webhook1 = world webhook2 = stackoverflow, и все они имеют свое собственное значение. Как мне в этом случае распечатать каждое из этих значений. Я сделал `` webhook_number = 'webhook' + str (file_number) '', но это просто распечатало webhook0-1-2, но не фактическое значение в них
webhooks = {1: 'hello', 2: 'world', 3:'stackoverflow'}; for file_number in file_numbers: print(webhooks[file_number])
Можно ли добавить это в метод etc def slack ():? Как-то я попытался выяснить, но безуспешно!