2015-03-03 2 views
0

J'essaie de me connecter vérifier le montant d'une adresse BTC (avec la clé privée). J'ai l'adresse et la clé dans un fichier. Quand j'écris la var directement, c'est le script python c'est le travail, mais quand j'essaye de faire la même chose avec la var du fichier, ça ne marche pas. J'ai vérifié mon var après les avoir pris du fichier (avec print) et j'ai aussi vérifié leur type qui est String.I essaye aussi de str() mes deux var mais ça ne change rien. J'utilise python 3.4 sur windows et l'API de blockchain.info. Voici la doc git: https://github.com/blockchain/api-v1-client-python/blob/master/docs/wallet.mdMa var ne fonctionne pas avec Blockchain API

sortieFichier = open(fichierSortie, 'a')  
fd = open(fichierClef, 'r') 
n = 0 
miniCompt=0 
aTrouver=": " 
for line in fd: 
    n += 1 
    miniCompt+= 1 
     
    #extract the adress from the file 
    if(miniCompt==1): 
        adressBTC=str(line) 
        tronc = adressBTC.find(aTrouver) 
        adressBTC =adressBTC[len(aTrouver)+tronc:] 
   
      
    if(miniCompt==2): 
     # exctract the key 
        clefBTC=str(line) 
        tronc = clefBTC.find(aTrouver) 
        clefBTC =str(clefBTC[len(aTrouver)+tronc:]) 
          
        print(clefBTC) # = 5J6jgMj4FhcT9y1########################### 
        print(adressBTC) # = 1CBXtLZdv4jN9LGF5Dbs############## 
        print(isinstance(clefBTC,int)) # return true 
          

        # connect with the function to check the wallet  
        wallet = Wallet(clefBTC, '') 
        addr = wallet.get_address(adressBTC, confirmations = 2) # Ligne 37 HERE ERROR 
        amount=addr.balance 
        amount=amount/100000000 
        print(amount) 
        if(amount>0): 
            sortieFichier.write(adressBTC) 
            sortieFichier.write(clefBTC) 
            sortieFichier.write(amount) 
        miniCompt=0 
          
          
fd.close() 

et voici l'erreur:

True 
  
Traceback (most recent call last): 
  
  File "C:\Python34\Lib\site-packages\blockchain\monScript.py", line 37, in <mod 
  
ule> 
  
    addr = wallet.get_address(adressBTC, confirmation 
  
s = 2) 
  
  File "C:\Python34\lib\site-packages\blockchain\wallet.py", line 133, in get_ad 
  
dress 
  
    response = util.call_api("merchant/{0}/address_balance".format(self.identifi 
  
er), params) 
  
  File "C:\Python34\lib\site-packages\blockchain\util.py", line 23, in call_api 
  
    response = urlopen(BASE_URL + resource, payload, timeout = TIMEOUT).read() 
  
  File "C:\Python34\lib\urllib\request.py", line 153, in urlopen 
  
    return opener.open(url, data, timeout) 
  
  File "C:\Python34\lib\urllib\request.py", line 453, in open 
  
    req = meth(req) 
  
  File "C:\Python34\lib\urllib\request.py", line 1097, in do_request_ 
  
    raise URLError('no host given') 
  
urllib.error.URLError: <urlopen error no host given> 

Il est très étrange parce que si j'écris la clé/adresse au lieu du var, il est un travail:

wallet = Wallet('5J6jgMj4FhcT9y1###########################', '') 
addr = wallet.get_address('1CBXtLZdv4jN9LGF5Dbs##############', confirmations = 2) 

Je m'excuse pour mon mauvais anglais et je suis toujours ouvert pour d'autres explications

Répondre

0

dans car visible ici: adresseBTC = adresseBTC [len (aTrouver) + tronc:] Comme l'adresse est toujours de la même taille (idem pour clé) je fais: adresseBTC = adresseBTC [len (aTrouver) + tronc: len (aTrouver) + tronc + 34]