Декодирование Base64 в Python 2.7 - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю со следующим скриптом, который читает файл CSV и декодирует его.Когда я запускаю его, я получаю ошибку неверного заполнения.Когда я беру отдельную запись и выполняю str.decode('base64'), я получаю соответствующий результат (без ошибок).В чем может быть проблема?Могут ли некоторые записи быть повреждены, и это приводит к потере всего процесса?

def get_sigpair_from_csv(csv_in, start=0, skip_to_tx=None, want_tx=[]):
    want_tx=set(want_tx)
    skip_entries = True
    with open(csv_in,'r') as f:
        for nr,line in enumerate(f):
            if nr<start:
                if nr%100000==0:
                    print "skip",nr,f.tell()
                continue
            if nr % 10000000 == 0:
                print "10m", nr
            try:
                # read data
                cols = line.split(";",1)
                tx = cols[0].strip()

                if skip_to_tx and tx==skip_to_tx:
                    skip_entries=False
                    # skip this entry - already in db
                    continue
                if skip_to_tx and skip_entries:
                    print "skiptx",nr, tx
                    continue
                if want_tx and tx not in want_tx:
                    continue

                scriptsig = cols[1].decode("base64")
                sig = scriptsig_to_ecdsa_sig(scriptsig)
                sig['tx'] = tx
                sig['nr'] = nr
                yield sig
            except ValueError, ve:
                #print tx,repr(ve)
                pass
            except Exception, e:
                print tx, repr(e)

Вот пример вывода:

879b068c75492e9d860763e843212d7aed2fb81ad3ee24592b48cdf5df624dcd Error('Incorrect padding',)

Однако, когда я делаю:

x = '879b068c75492e9d860763e843212d7aed2fb81ad3ee24592b48cdf5df624dcd'
x.decode('base64')

Работает

...