我实现了一个编写和读取python字典的简单方法,但是,我很难理解为什么它不能作为函数工作。在

要保存字典,我使用以下命令:

def saveHash():
print "Saving hash file to ./savedHash"
f = open('savedHash','w')
f.write(str(my_hash))
f.close()
print "Save Successfull"
saveHash()

这个很好用。现在要在脚本中加载我的字典:

^{pr2}$

问题是它在我运行的脚本中似乎不起作用,但它在shell中却可以工作。如果我在目录/home/dan/中有savedHash,并在该目录中打开一个pythonshell,那么运行loadHash('savedHash')或{}或{},它不会填充字典/哈希。当我执行random.choice(my_hash.keys())时,它失败并返回以下错误消息:

Traceback (most recent call last):
File "", line 1, in 
File "/projects/dan/software/Python-2.7.2/Lib/random.py", line 274, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
IndexError: list index out of range

但是,如果我一个接一个地运行命令,比如:

>>> f = open(name,'r')
>>> my_hash = eval(f.read())
>>> f.close()

我可以键入print random.choice(my_hash.keys())并从中获取值。有人知道为什么它在脚本中不起作用,但在shell中却能起作用吗?我正在使用一个参数解析器来获取文件名。