我已经构建了一个函数来创建一个字典并将其返回。此函数称为get_values
,结构如下:
def initiate_values(directory):
for file in glob.glob(os.path.join(directory, '*.[xX][lL][sS]')):
title = os.path.basename(file).lower()
if title == 'etc.xls':
wb = xlrd.open_workbook(file)
wb = wb.sheet_by_name(u'Sheet1')
get_values(file, wb)
def get_values():
info_from_etc = dict()
# build dict
return info_from_etc
它有效,因为它创建了字典,然后当我尝试打印它时,它会打印正确的值。但是,当我尝试从另一个函数调用此get_values
函数时,字典将返回“无”。这是我调用get_values
-
def packager():
info_from_etc = initiate_values()
print info_from_etc # this prints "None"
我在这里做错了什么,如何在这里返回正确的词典 - 也就是说,不是None
的词典。
答案 0 :(得分:3)
您需要return
来自initiate_values
的字典:
def initiate_values(directory):
for file in glob.glob(os.path.join(directory, '*.[xX][lL][sS]')):
title = os.path.basename(file).lower()
if title == 'etc.xls':
wb = xlrd.open_workbook(file)
wb = wb.sheet_by_name(u'Sheet1')
return get_values(file, wb) # added `return'
return {} # or some other value
答案 1 :(得分:1)
info_from_etc = initiate_values()
initiate_values
不返回任何内容,因此默认情况下,它返回None
。您应该能够根据您的目标找出返回语句的位置。
答案 2 :(得分:0)
我同意你确实需要在init_values()函数中返回字典,但是你也在initiate_values函数中给get_values两个参数(file,wb),而你在声明中没有给它任何参数。似乎那里也可能存在问题。