Создание URL с помощью concatinate - PullRequest
0 голосов
/ 02 марта 2019

Попытка создать URL-адрес с использованием уже настроенных переменных, а затем известной части URL-адреса на серверной части.Код выдаст следующую ошибку:

TypeError: невозможно объединить объекты 'str' и 'NoneType'

block_explorer_url  = "https://blockexplorer.com/api/addrs/"
#?from=0&to=50

parser = argparse.ArgumentParser(description='Collect and visualize Bitcoin transactions and any related hidden services.')

parser.add_argument("--graph",help="Output filename of the graph file. Example: bitcoin.gexf",default="bitcoingraph.gexf")
parser.add_argument("--address", help="A bitcoin address to begin the search on.",)


args = parser.parse_args()

bitcoin_address = args.address
graph_file      = args.graph

# 
# Retrieve all bitcoin transactions for a Bitcoin address
#
def get_all_transactions(bitcoin_address):

    transactions = []
    from_number  = 0
    to_number    = 50

    block_explorer_url_full = block_explorer_url + bitcoin_address + "/txs?from=%d&to=%d" % (from_number,to_number)

Логически, с переменными и добавлениемна остальной части URL как строка делает, так как для меня.Куда я сбился с пути?

1 Ответ

0 голосов
/ 02 марта 2019

Проблема в том, что когда bitcoin_address равно None (не предоставлено пользователем), ваша программа все еще пытается объединить его в str, что определенно не будет работать.

Чтобы решить эту проблему, вы можете добавить некоторый код, который проверяет результат parse_args и выдает ошибку, когда это происходит, например:

if args.address is None:
    raise ValueError('A bitcoin address must be provided.')

Отдельно, пока ваш подход кформатирование строки обычно правильно, вам следует рассмотреть возможность перехода от форматирования в стиле C к методу format, например:

В начале вашего сценария:

base_url = 'https://blockexplorer.com/api/addrs/{address}/txs?from={from}&to={to}'

и далее в функции:

full_url = base_url.format(address=bitcoin_address,
                           from=from_number,
                           to=to_number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...