Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.01.2018
Сообщений: 2

TypeError: must be str, not bytes

06.01.2018, 18:40. Показов 1766. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Ошибка в коде:

Traceback (most recent call last):
File "C:/Cloud/Cripto/3.py", line 53, in <module>
print (api_query("GetBalance"))
File "C:/Cloud/Cripto/3.py", line 34, in api_query
signature = API_KEY + "POST" + urllib.parse.quote_plus( url ).lower() + nonce + requestContentBase64String
TypeError: must be str, not bytes

Подскажите пожалуйста что надо поправить чтоб убрать ошибку в коде ниже.

Заранее благодарю.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import time
import hmac
import urllib
import requests
import hashlib
import base64
import sys
import json
 
API_KEY = 'ac85...4173abdf9...8e7d2202'
API_SECRET = 'KY9R6...QeDr2kVrq...oGk0Ev36Z...uafbsk'
 
 
def api_query( method, req = None ):
 if not req:
         req = {}
 print ("def api_query( method = " + method + ", req = " + str( req ) + " ):")
 time.sleep( 1 )
 public_set = set([ "GetCurrencies", "GetTradePairs", "GetMarkets", "GetMarket", "GetMarketHistory", "GetMarketOrders" ])
 private_set = set([ "GetBalance", "GetDepositAddress", "GetOpenOrders", "GetTradeHistory", "GetTransactions", "SubmitTrade", "CancelTrade", "SubmitTip" ])
 if method in public_set:
         url = "https://www.cryptopia.co.nz/api/" + method
         if req:
             for param in req:
                 url += '/' + str( param )
         r = requests.get( url )
 elif method in private_set:
         url = "https://www.cryptopia.co.nz/Api/" + method
         nonce = str( int( time.time() ) )
         post_data = json.dumps( req );
         m = hashlib.md5()
         m.update(post_data.encode('utf-8'))
         requestContentBase64String = base64.b64encode(m.digest())
         signature = API_KEY + "POST" + urllib.parse.quote_plus( url ).lower() + nonce + requestContentBase64String
         hmacsignature = base64.b64encode(hmac.new(base64.b64decode( API_SECRET ), signature, hashlib.sha256).digest())
         header_value = "amx " + API_KEY + ":" + hmacsignature + ":" + nonce
         headers = { 'Authorization': header_value, 'Content-Type':'application/json; charset=utf-8' }
         r = requests.post( url, data = post_data, headers = headers )
 response = r.text
 print ("( Response ): " + response)
 return response.replace("false","False").replace("true","True").replace('":null','":None' )
 
 
# Public:
# +
# print api_query("GetCurrencies")
 
# +
#print (api_query("GetMarket", [ 101, 6 ] ))
# {"Success":True,"Message":None,"Data":{"TradePairId":100,"Label":"DOT/BTC","AskPrice":0.00000020,"BidPrice":0.00000019,"Low":0.00000019,"High":0.00000021,"Volume":1263556.65136394,"LastPrice":0.00000019,"LastVolume":774.83684404,"BuyVolume":50896673.08961847,"SellVolume":33046510.52562918,"Change":0.0},"Error":None}
 
# Private:
print (api_query("GetBalance"))
 
# +
# print api_query("GetBalance", {'CurrencyId':2} )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2018, 18:40
Ответы с готовыми решениями:

TypeError: must be str, not bytes
Здравствуйте. Решил немного улучшить свой код, но мне выдает ошибку - гуглил, но всё безуспешно. Вот сама ошибка: И вот код(в...

TypeError: a bytes-like object is required, not 'str'
Здравствуйте, подскажите как можно исправить:скрипт выдает такую ошибку. import socket from tkinter import * tk=Tk() ...

Как избавиться от ошибки TypeError: expected str, bytes or os.PathLike
Решил написать простенькое приложение в целях практики и изучения Python и Pyqt5 Что делает приложение: извлекает файл, добавляет туда...

2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.01.2018, 22:42
Цитата Сообщение от ZhSV77 Посмотреть сообщение
что надо поправить чтоб убрать ошибку в коде ниже.
Не пытаться конкатенировать строки и байты. Где у вас одно, а где другое - вы должны лучше знать.

b64encode совершенно точно возвращает байты.
0
0 / 0 / 0
Регистрация: 06.01.2018
Сообщений: 2
06.01.2018, 23:36  [ТС]
Спасибо. Но знать этого мне пока не дано. Код брал готовый, не рабочий из за несовместимости версий питона видимо. Ремонтирую, вот до тупика дошёл...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2018, 23:36
Помогаю со студенческими работами здесь

Ошибка TypeError: expected str, bytes or os.PathLike object, not list
В попытках выучить питон добрался до архивов файлов. Хотел сделать что-то вроде автоматического архиватора, который бы создавал архив с...

TypeError: expected str, bytes or os.PathLike object, not _io.BytesIO
Помогите ошибка Traceback (most recent call last): File &quot;python100new.py&quot;, line 43, in &lt;module&gt; File &quot;hooman\hooman.py&quot;,...

Возникло исключение: TypeError expected str, bytes or os.PathLike object, not _io.TextIOWrapper
Ошибка Возникло исключение: TypeError expected str, bytes or os.PathLike object, not _io.TextIOWrapper File...

Ошибка return self.randrange(a, b+1) TypeError: can only concatenate str (not "int") to str
import random import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication Form, Window = uic.loadUiType(&quot;Design.ui&quot;) ...

Can't concat str to bytes
def post_app(environ, start_response): html = form if environ == 'POST': post_env = environ.copy() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru