#python #bitcoin #private-key
Вопрос:
Добрый день, друзья, я только начал изучать python, я нашел этот код, который соответствует моим потребностям, но на выходе все синхронизировано в одной строке, помогите мне с этой проблемой».
import ecdsa
import hashlib
import base58
with open("my_private_key.txt", "r") as f: #Input file path
for line in f:
#Convert hex private key to bytes
private_key = bytes.fromhex(line)
#Derivation of the private key
signing_key = ecdsa.SigningKey.from_string(private_key, curve=ecdsa.SECP256k1)
verifying_key = signing_key.get_verifying_key()
public_key = bytes.fromhex("04") verifying_key.to_string()
#Hashes of public key
sha256_1 = hashlib.sha256(public_key)
ripemd160 = hashlib.new("ripemd160")
ripemd160.update(sha256_1.digest())
#Adding prefix to identify Network
hashed_public_key = bytes.fromhex("00") ripemd160.digest()
#Checksum calculation
checksum_full = hashlib.sha256(hashlib.sha256(hashed_public_key).digest()).digest()
checksum = checksum_full[:4]
#Adding checksum to hashpubkey
bin_addr = hashed_public_key checksum
#Encoding to address
address = str(base58.b58encode(bin_addr))
final_address = address[2:-1]
print(final_address)
with open("my_addresses.txt", "a") as i:
i.write(final_address)
»
Комментарии:
1. Здравствуйте и добро пожаловать @kamburishka, для того, чтобы люди правильно ответили на ваш вопрос, я думаю, было бы полезно, если бы вы могли уточнить. Когда вы говорите «все синхронизировано в одной строке», вы хотите сказать, что трудно читать/интерпретировать выходные данные, потому что они представлены в одном большом фрагменте?
Ответ №1:
print
записывает конечную новую строку после записи всех ее аргументов. write
нет; вы должны предоставить его сами.
with open("my_addresses.txt", "a") as i:
i.write(final_address "n")
Или вы можете использовать print
:
with open("my_addresses.txt", "a") as i:
print(final_address, file=i)
Игнорируя многие из его ключевых аргументов, print
определяется что-то вроде
def print(*args, end='n', sep=' ', file=sys.stdout):
file.write(sep.join(args))
file.write(end)
Кроме того, обратите внимание, что вам не нужно повторно открывать выходной файл. Вы можете открыть его одновременно с вводом и оставить открытым на время цикла.
with open("my_private_key.txt", "r") as f,
open("my_addresses.txt", "a") as i:
for line in f:
...
print(final_address, file=i)
Комментарии:
1. Все супер, большое вам спасибо за вашу помощь
2. Дорогой друг @chepner, вы не можете сказать мне, как добавить многопоточность в этот скрипт, он работает очень медленно