У меня есть сценарий, который извлекает данные значений ячеек из книги 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.