(Python) Функция Ha sh возвращает разные значения в зависимости от того, как вызывается скрипт (cmd vs IDE) - PullRequest
0 голосов
/ 09 июля 2020

У меня есть сценарий, который извлекает данные значений ячеек из книги Excel во вложенные кортежи. Затем он возвращает ha sh этого кортежа. Я могу запустить его в своей среде IDE (Spyder 4.0.1, Python 3.7) или вызвать функцию из командной строки.

Проблема в том, что ha sh - это другое число в зависимости от как я это называю. Это не должно быть так, поскольку он должен извлекать одни и те же точные данные из той же самой книги Excel, а затем использовать ту же самую точную функцию ha sh. Я уже пробовал отладку, но у меня заканчиваются идеи. Мысли?

Соответствующий код:

import extract #my own code, which contains open_excel()
import sys

#This function takes nested lists and turns them into nested tuples.
def list2tuple(l):
    lcopy = []
    for item in l:
        if type(item) == list:
            lcopy.append(list2tuple(item))
        else:
            lcopy.append(item)
    return tuple(lcopy)

def hashxl(filename):
    filetype = filename[filename.index('.')+1:]
    if filetype in ['xlsx','xlsb']:
        f = extract.open_excel(filename)  #This should be a list of lists of lists of data (sheets, rows, columns of excel data)
        h = hash(list2tuple(f))
        return h

if sys.argv[1] == 'hash':
    print(hashxl(sys.argv[2])

Когда я запускаю

python thiscodefile.py hash testfile.xlsb

в командной строке, я получаю -3482465542484766986. Когда я запускаю

hashxl("testfile.xlsb")

в Spyder IDE, я получаю 6187680721660987353.

...