1

Тема: Помилка при роботі з json

Помилка виникає динамічно, то вона присутня то відсутні.
записав відос проблеми:
https://www.youtube.com/watch?v=hJJNTDCpgrg&&
проблемний код:

import requests
import time

# === GET запит =======================================
def getWaves():
    while True:
        pairs = "https://api.tidex.com/api/3/depth/" + 'waves_btc'  +  '-' \
                                                     + 'waves_eth'  +  '-' \
                                                     + 'waves_usdt' + '-' \
                                                     + 'waves_wusd' + '-' \
                                                     + 'waves_weur' + '-' \
                                                     + 'eth_btc'    + '-' \
                                                     + 'btc_usdt'   + '-' \
                                                     + 'eth_usdt'   + '-' \
                                                     + 'btc_wusd'   + '-' \
                                                     + 'eth_wusd'   + '-' \
                                                     + 'btc_weur'   + '-' \
                                                     + 'eth_weur'
        pairsRequests = requests.get(pairs)
        if pairsRequests.status_code == 200:
            pairsRequests = pairsRequests.json()
            try:
                if pairsRequests['error'] != '':
                    print(pairsRequests['error get Depth'])
                    time.sleep(3)
            except KeyError:
                return pairsRequests

# === Робота з основним массивом =======================
def arrProcent(u):
    # Розпарс ліпших цін
    def bestPrice(u, pairs, ask_bid):
        return u[pairs][ask_bid][0][0]
    # Розпарс обʼма ліпших цін
    def bestPriceVolume(u, pairs, ask_bid):
        return u[pairs][ask_bid][0][1]
    # Мінімальний обʼєм
    def minVolume(p1, pA, p2):
        return min(p1, pA, p2)
    # Конвертація арбітраж обєма в кількість покупки
    def arbVolume (aPrice, aVolume, buyPrice):
        return (aPrice * aVolume) / buyPrice
    # Основний массив
    arr = {
        'WavesEth_EthBtc_WavesBtc':   [bestPrice(u,'waves_eth', 'bids') * bestPrice(u,'eth_btc', 'bids') / bestPrice(u,'waves_btc', 'asks'),   'waves_eth', bestPrice(u,'waves_eth', 'bids'),   'eth_btc' ,bestPrice(u,'eth_btc', 'bids'),   'waves_btc', bestPrice(u,'waves_btc', 'asks'),    minVolume(bestPriceVolume(u,'waves_eth', 'bids'),  arbVolume(bestPriceVolume(u,'eth_btc', 'bids'),bestPrice(u,'eth_btc', 'bids'),bestPrice(u,'waves_btc', 'asks')),  bestPriceVolume(u,'waves_btc', 'asks'))],
        'WavesBtc_EthBtc_WavesEth':   [bestPrice(u,'waves_btc', 'bids') / bestPrice(u,'eth_btc', 'asks') / bestPrice(u,'waves_eth', 'asks'),   'waves_btc', bestPrice(u,'waves_btc', 'bids'),   'eth_btc' ,bestPrice(u,'eth_btc', 'asks'),   'waves_eth', bestPrice(u,'waves_eth', 'asks'),    minVolume(bestPriceVolume(u,'waves_btc', 'bids'),  arbVolume(bestPriceVolume(u,'eth_btc', 'asks'),bestPrice(u,'eth_btc', 'asks'),bestPrice(u,'waves_eth', 'asks')),  bestPriceVolume(u,'waves_eth', 'asks'))],
        'WavesBtc_BtcUsdt_WavesUsdt': [bestPrice(u,'waves_btc', 'bids') * bestPrice(u,'btc_usdt','bids') / bestPrice(u,'waves_usdt','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'bids'),   'btc_usdt',bestPrice(u,'btc_usdt','bids'),   'waves_usdt',bestPrice(u,'waves_usdt','asks'),    minVolume(bestPriceVolume(u,'waves_btc', 'bids'),  arbVolume(bestPriceVolume(u,'btc_usdt','bids'),bestPrice(u,'btc_usdt','bids'),bestPrice(u,'waves_usdt','asks')),  bestPriceVolume(u,'waves_usdt','asks'))],
        'WavesUsdt_BtcUsdt_WavesBtc': [bestPrice(u,'waves_usdt','bids') / bestPrice(u,'btc_usdt','asks') / bestPrice(u,'waves_btc', 'asks'),   'waves_usdt',bestPrice(u,'waves_usdt','bids'),   'btc_usdt',bestPrice(u,'btc_usdt','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'asks'),    minVolume(bestPriceVolume(u,'waves_usdt','bids'),  arbVolume(bestPriceVolume(u,'btc_usdt','asks'),bestPrice(u,'btc_usdt','asks'),bestPrice(u,'waves_btc', 'asks')),  bestPriceVolume(u,'waves_btc', 'asks'))],
        'WavesEth_EthUsdt_WavesUsdt': [bestPrice(u,'waves_eth', 'bids') * bestPrice(u,'eth_usdt','bids') / bestPrice(u,'waves_usdt','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'bids'),   'eth_usdt',bestPrice(u,'eth_usdt','bids'),   'waves_usdt',bestPrice(u,'waves_usdt','asks'),    minVolume(bestPriceVolume(u,'waves_eth', 'bids'),  arbVolume(bestPriceVolume(u,'eth_usdt','bids'),bestPrice(u,'eth_usdt','bids'),bestPrice(u,'waves_usdt','asks')),  bestPriceVolume(u,'waves_usdt','asks'))],
        'WavesUsdt_EthUsdt_WavesEth': [bestPrice(u,'waves_usdt','bids') / bestPrice(u,'eth_usdt','asks') / bestPrice(u,'waves_eth', 'asks'),   'waves_usdt',bestPrice(u,'waves_usdt','bids'),   'eth_usdt',bestPrice(u,'eth_usdt','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'asks'),    minVolume(bestPriceVolume(u,'waves_usdt','bids'),  arbVolume(bestPriceVolume(u,'eth_usdt','asks'),bestPrice(u,'eth_usdt','asks'),bestPrice(u,'waves_eth', 'asks')),  bestPriceVolume(u,'waves_eth', 'asks'))],
        'WavesBtc_BtcWusd_WavesWusd': [bestPrice(u,'waves_btc', 'bids') * bestPrice(u,'btc_wusd','bids') / bestPrice(u,'waves_wusd','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'bids'),   'btc_wusd',bestPrice(u,'btc_wusd','bids'),   'waves_wusd',bestPrice(u,'waves_wusd','asks'),    minVolume(bestPriceVolume(u,'waves_btc', 'bids'),  arbVolume(bestPriceVolume(u,'btc_wusd','bids'),bestPrice(u,'btc_wusd','bids'),bestPrice(u,'waves_wusd','asks')),  bestPriceVolume(u,'waves_wusd','asks'))],
        'WavesWusd_BtcWusd_WavesBtc': [bestPrice(u,'waves_wusd','bids') / bestPrice(u,'btc_wusd','asks') / bestPrice(u,'waves_btc', 'asks'),   'waves_wusd',bestPrice(u,'waves_wusd','bids'),   'btc_wusd',bestPrice(u,'btc_wusd','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'asks'),    minVolume(bestPriceVolume(u,'waves_wusd','bids'),  arbVolume(bestPriceVolume(u,'btc_wusd','asks'),bestPrice(u,'btc_wusd','asks'),bestPrice(u,'waves_btc', 'asks')),  bestPriceVolume(u,'waves_btc', 'asks'))],
        'WavesEth_EthWusd_WavesWusd': [bestPrice(u,'waves_eth', 'bids') * bestPrice(u,'eth_wusd','bids') / bestPrice(u,'waves_wusd','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'bids'),   'eth_wusd',bestPrice(u,'eth_wusd','bids'),   'waves_wusd',bestPrice(u,'waves_wusd','asks'),    minVolume(bestPriceVolume(u,'waves_eth', 'bids'),  arbVolume(bestPriceVolume(u,'eth_wusd','bids'),bestPrice(u,'eth_wusd','bids'),bestPrice(u,'waves_wusd','asks')),  bestPriceVolume(u,'waves_wusd','asks'))],
        'WavesWusd_EthWusd_WavesEth': [bestPrice(u,'waves_wusd','bids') / bestPrice(u,'eth_wusd','asks') / bestPrice(u,'waves_eth', 'asks'),   'waves_wusd',bestPrice(u,'waves_wusd','bids'),   'eth_wusd',bestPrice(u,'eth_wusd','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'asks'),    minVolume(bestPriceVolume(u,'waves_wusd','bids'),  arbVolume(bestPriceVolume(u,'eth_wusd','asks'),bestPrice(u,'eth_wusd','asks'),bestPrice(u,'waves_eth', 'asks')),  bestPriceVolume(u,'waves_eth', 'asks'))],
        'WavesBtc_BtcWeur_WavesWeur': [bestPrice(u,'waves_btc', 'bids') * bestPrice(u,'btc_weur','bids') / bestPrice(u,'waves_weur','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'bids'),   'btc_weur',bestPrice(u,'btc_weur','bids'),   'waves_weur',bestPrice(u,'waves_weur','asks'),    minVolume(bestPriceVolume(u,'waves_btc', 'bids'),  arbVolume(bestPriceVolume(u,'btc_weur','bids'),bestPrice(u,'btc_weur','bids'),bestPrice(u,'waves_weur','asks')),  bestPriceVolume(u,'waves_weur','asks'))],
        'WavesWeur_BtcWeur_WavesBtc': [bestPrice(u,'waves_weur','bids') / bestPrice(u,'btc_weur','asks') / bestPrice(u,'waves_btc', 'asks'),   'waves_weur',bestPrice(u,'waves_weur','bids'),   'btc_weur',bestPrice(u,'btc_weur','asks'),   'waves_btc', bestPrice(u,'waves_btc', 'asks'),    minVolume(bestPriceVolume(u,'waves_weur','bids'),  arbVolume(bestPriceVolume(u,'btc_weur','asks'),bestPrice(u,'btc_weur','asks'),bestPrice(u,'waves_btc', 'asks')),  bestPriceVolume(u,'waves_btc', 'asks'))],
        'WavesEth_EthWeur_WavesWeur': [bestPrice(u,'waves_eth', 'bids') * bestPrice(u,'eth_weur','bids') / bestPrice(u,'waves_weur','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'bids'),   'eth_weur',bestPrice(u,'eth_weur','bids'),   'waves_weur',bestPrice(u,'waves_weur','asks'),    minVolume(bestPriceVolume(u,'waves_eth', 'bids'),  arbVolume(bestPriceVolume(u,'eth_weur','bids'),bestPrice(u,'eth_weur','bids'),bestPrice(u,'waves_weur','asks')),  bestPriceVolume(u,'waves_weur','asks'))],
        'WavesWeur_EthWeur_WavesEth': [bestPrice(u,'waves_weur','bids') / bestPrice(u,'eth_weur','asks') / bestPrice(u,'waves_eth', 'asks'),   'waves_weur',bestPrice(u,'waves_weur','bids'),   'eth_weur',bestPrice(u,'eth_weur','asks'),   'waves_eth', bestPrice(u,'waves_eth', 'asks'),    minVolume(bestPriceVolume(u,'waves_weur','bids'),  arbVolume(bestPriceVolume(u,'eth_weur','asks'),bestPrice(u,'eth_weur','asks'),bestPrice(u,'waves_eth', 'asks')),  bestPriceVolume(u,'waves_eth', 'asks'))]
          }
    return arr

print(getWaves())
import lib.TidexLib
# ===============================
depthTidex = lib.TidexLib.getWaves()
t = lib.TidexLib.arrProcent(depthTidex)
# ===============================

По ідеї можна обійти помилку циклом та try(break), але це не зовсім правильно. Товариші пайтоністи допоможіть будь-ласка.

2 Востаннє редагувалося Cryptoman (02.06.2018 22:41:52)

Re: Помилка при роботі з json

Блин! як подолати цю динамічну помилку? що не так роблю? Оновив навіть всі модулі... не допомогло!

3

Re: Помилка при роботі з json

Ніяк, бо ви не показуєте нам текст помилки.

Подякували: leofun011

4

Re: Помилка при роботі з json

так на відео все продемонстрував

5

Re: Помилка при роботі з json

https://preview.ibb.co/j2SCky/021.png
якщо треба можу ще продемонструвати довідку від жека))

6 Востаннє редагувалося koala (03.06.2018 07:21:43)

Re: Помилка при роботі з json

Довідку не треба, а от текст помилки таки було варто. У тому, що повертає сайт, інколи немає блоку з waves_eth (і, мабуть, ще деяких, ви ж явно не ведете облік можливих відповідей); цього ви на місці ніяк не виправите, окрім додаткових запитів. Так що робіть цикл, try і в except додавайте continue, а в try після декодування - break чи return.

7

Re: Помилка при роботі з json

блок  waves_eth в присутній у відповідях. Помилка виникає не зрозуміло від чого...

8

Re: Помилка при роботі з json

порівняння відповіді з помилкою та без
https://www.youtube.com/watch?v=m4fS2cRgKXE&&

9

Re: Помилка при роботі з json

Якщо ви продовжуватимете викладати текст у форматі відео, то вам навряд чи хтось допоможе.

Подякували: leofun011

10 Востаннє редагувалося Cryptoman (03.06.2018 12:48:21)

Re: Помилка при роботі з json

о великий koala, що треба робити, щоб мені допомогли? Що я роблю не так?
На мою думку без відео треба було б Вам, пред'явити довідку від психіатра, педіатра, водоканала ну і даї мабуть). Ви як в тому анекдоті про гопніка та сірники.

11

Re: Помилка при роботі з json

Cryptoman написав:

о великий koala, що треба робити, щоб мені допомогли? Що я роблю не так?
На мою думку без відео треба було б Вам, пред'явити довідку від психіатра, педіатра, водоканала ну і даї мабуть). Ви як в тому анекдоті про гопніка та сірники.

переглядати відео - непродуктивно.
треба давати для аналізу бектрек помилки в текстовому вигляді
про всяк випадок, зауважу, що в пайчармі є брейкпоінти (в т.ч. з умовою), котрі дозволяють зупинити процес виконнання в певній точці за певних умов і тоді засобами панелі дебага подивитися стан всіх змінних, класів , тощо.

Подякували: leofun01, Chemist-i2

12 Востаннє редагувалося Cryptoman (03.06.2018 13:22:02)

Re: Помилка при роботі з json

відео не продуктивно?
100% телепатія продуктивніше, блин! а нафіга тоді форум? якщо це не так, ну тоді щоб це було продуктивніше, треба описувати всі дії в текстовому форматі що я роблю і є помилка чи ні! а потом ще якось пруфити в текстовому форматі що проблема не в тому, що інші припускають.
У текстовому виді??? Скріншот впадлу відкрити? ага ти забув вказати систему!!! + не вказав ide, ага ще не вказав ще там якусь х__ю а і відео в тебе німе і багато текста. Це що нейросітка відповідає на запитання? нафіга якісь умовності??? ааа бомбить!!!

13

Re: Помилка при роботі з json

Cryptoman написав:

відео не продуктивно?
100% телепатія продуктивніше, блин! а нафіга тоді форум? якщо це не так, ну тоді щоб це було продуктивніше, треба описувати всі дії в текстовому форматі що я роблю і є помилка чи ні! а потом ще якось пруфити в текстовому форматі що проблема не в тому, що інші припускають.
У текстовому виді??? Скріншот впадлу відкрити? ага ти забув вказати систему!!! + не вказав ide, ага ще не вказав ще там якусь х__ю а і відео в тебе німе і багато текста. Це що нейросітка відповідає на запитання? нафіга якісь умовності??? ааа бомбить!!!

логи продуктивніші.
потрібно не анімацію появи помилки, а саме її бектрек - бачити яка помилка, в якому модулі , в якому рядку, тощо.

і далі, ви пропонуєте пальчиками набирати текст зі скріншота, щоб пошукати збігів в документації чи пеервірити здогадку  на стековерфлові?

Подякували: leofun011

14

Re: Помилка при роботі з json

я новачок в програмуванні... і розумію що помилка  у відсутності ключа, який в моєму випадку присутній. Яка документація? помилка виникає при написанні свого модуля. Вам не здається що Ви просто безглуздо захищаєте таракани Вашого колеги.

15

Re: Помилка при роботі з json

У вас є програма, вона працює не так, як ви очікували. Це дуже типова ситуація для програміста. Для того, щоб розібратися, чому так, може знадобитися трохи змінити код чи вхідні дані і запустити. Гадаю, що ви, хоч і новачок, але це вже розумієте.
Але ми - не телепати і не маги. Ми такі самі програмісти, як і ви, хіба що в чомусь досвідченіші. І нам теж може знадобитися трохи змінити код і вхідні данні та запустити, щоб розібратися в ситуації. Не факт, що знадобиться, але не надати нам такої можливості, коли ви її маєте, не зовсім доречно, правда ж? От тому і не треба користуватися відео - якість зображення на відео низька, а копіювати звідти текст взагалі неможливо.
У мережі багато сайтів, які дозволяють форматувати текст, викласти його чи викласти кілька текстів для порівняння. Якщо ви скористаєтеся одним (чи кількома) із них, ви зробите нам велику послугу (а можливо, і собі, і тоді й до нас звертатися не доведеться).

Подякували: leofun011

16 Востаннє редагувалося Cryptoman (03.06.2018 17:37:00)

Re: Помилка при роботі з json

який ***** текст з відео треба скопіювати щоб обійти помилку????  ще і подякували за цей маразм)))) типо як він достойно відповів)))
угараю!!!
Не записуй відео а користуйся сервісами... а чому? ну а тому що так великий koala написав, це тільки по причині його уподобань. Яка різниця доказувати теорію на папері чи наприклад на дошці крейдою? суть теорії одна, так само відео яким я хотів продемонструвати помилку.

Я прихильник українського і пишу тільки тут, багато гуглю і багато находжу відповідей, але таких персонажів як великий koala не зустрічав на цих сервісах. Якщо ти не знаєш відповіді то просто проходи мимо... Не!!!! йому треба доепатись) апнути свою самооцінку, авторитет типо на форумі, мабуть в житті непримітний тіпок)))

17

Re: Помилка при роботі з json

Cryptoman написав:

я новачок в програмуванні... і розумію що помилка  у відсутності ключа, який в моєму випадку присутній.

а мені щоб зрозуміти - потрібно бачити  вивід програми  - логи.
і відкривати всякі скіншоти і відео - це :
- довго
- не читабельно, вирвано з контекту
- не піддається копіюванню

Яка документація? помилка виникає при написанні свого модуля. Вам не здається що Ви просто безглуздо захищаєте таракани Вашого колеги.

коли у Вас буде хоча б кілька десятків годин досвіду успішних дебагів бекграундових(фонових) скраперів на віддалених серверах - посперечаємося про методики - як це краще роботи.

Ви попросили допомогу - Вас попросили надати неохідну для цього інформацію а не крутити кіно.

Подякували: leofun01, koala2

18

Re: Помилка при роботі з json

Cryptoman написав:

який ***** текст з відео треба скопіювати щоб обійти помилку????

то Ви хочете просто обійти помилку, а не усунути її?

try:
  ... якийсь код що бере дані по ключах...
except KeyError as e:
   print(" обходжу помилку :", e)
finally:
  ... щось може роблю...
Подякували: koala1

19 Востаннє редагувалося Cryptoman (03.06.2018 17:50:16)

Re: Помилка при роботі з json

koala написав:

Якщо ви продовжуватимете викладати текст у форматі відео, то вам навряд чи хтось допоможе.

Вибачне! тут треба бути телепатом, щоб зрозуміти яку інформацію мені треба надати, щоб вирішити задачу.

20

Re: Помилка при роботі з json

я знаю як працювати з помилками! помилку хотів зрозуміти!