Farklı iki txt dosyasının kombinasyonu

Bana göre ilginç, ama verdiğin fonksiyonun çalışma mantığına göre mantıklı bir durum var.

Hata alıyoruz, çünkü;

9931101114120119

Mesela yukarıdaki sayı, compressed için anlamlı değil ve hata veriyor.

Yani böyle sıkıştırılmış bir key için hata oluşuyor. Neden sorma, bitcoin modülündeki ve fonksiyonu içindekiler için hiç zaman harcamak istemedim.

Yani her sayının sıkıştırılmış key ini vermiyor. Hexadecimal olarak 9931101114120119 çalışmıyo yani.

Başta düşündüğüm gibi, try except içine alıp, çıkaramazsa devam ediyor.

Böyle olabileceğini düşündüğüm için zaten iki fonksiyona bölmüştüm.

Fakat şu haliyle tek fonksiyon olarak hazırladığım kodu paylaşacağım. Çünkü except esnasında anahtar atlıyor olabilir dikkat etmedim denemedim.

Ama şu haliye çalışır durumda, en azından doğru yoldamıyız, istediğinizi karşılıyor mu bakmak adına paylaşıyorum.

from time import process_time
import bitcoin

filehandle1 = open('file1.txt', mode="r") # First file
filehandle2 = open('file2.txt', mode="r") # Second file
filehandle3 = open('file3.txt', mode="r") # Check for combine
filehandle4 = open('file4.txt', 'w') # Equal list file

print("Wait for counting records first file...")
filecount = len(filehandle1.readlines())
filehandle1.seek(0)

count =0
t1_start = process_time() 


def convert_key(kod) :
    valid_private_key = False

    while not valid_private_key:
        private_key = kod
        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N
        
    wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
    compressed_private_key = private_key + '01'
    wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
    public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
    hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
    (public_key_x, public_key_y) = public_key
    if (public_key_y % 2) == 0:
        compressed_prefix = '02'
    else:
        compressed_prefix = '03'
    hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
    
    return  bitcoin.pubkey_to_address(public_key), bitcoin.pubkey_to_address(hex_compressed_public_key)

while True:
    line1 = filehandle1.readline()
    count = count+1
    if not line1:
        break
    
    while True:
        line2 = filehandle2.readline()

        if not line2:
            filehandle2.seek(0)
            break
        # Compressed Coin Check/   To check coin adress use coin_adress() here 
        
        try:
             compare_key, compare_key_compressed = convert_key(line1.strip()+line2.strip())
        except:
            continue
        
        while True:
            line3 =  filehandle3.readline()
         
            if not line3:
                filehandle3.seek(0)
                break
            
            if (line3 == compare_key) or (line3 == compare_key_compressed ) :
                filehandle4.write(line3)
     
    print("Processing: %"+"%0.4f"% ((count/filecount)*100))
    
t1_stop = process_time()
print("Elapsed time in seconds:", t1_stop-t1_start)

filehandle1.close()
filehandle2.close()
filehandle3.close()
filehandle4.close()

Mesela bana gönderdiğin dosyalarda bir tane yakaladı sadece;

1Hk9oEZj5mUYRCtq35QRVEj9oMfiMLsPjB

İnceleyin, üzerinde çalışalım.

2 Beğeni