我想从这里使用以下代码:
如何在当前python会话中保存所有变量?
import shelve
T='Hiya'
val=[1,2,3]
filename='/tmp/shelve.out'
my_shelf = shelve.open(filename,'n') # 'n' for new
for key in dir():
try:
my_shelf[key] = globals()[key]
except TypeError:
#
# __builtins__, my_shelf, and imported modules can not be shelved.
#
print('ERROR shelving: {0}'.format(key))
my_shelf.close()
但是它给出了以下错误:
Traceback (most recent call last):
File "./bingo.py", line 204, in <module>
menu()
File "./bingo.py", line 67, in menu
my_shelf[key] = globals()[key]
KeyError: 'filename'
你能帮我吗?
谢谢!
从您的追溯来看,您似乎正在尝试从函数内部运行该代码。
但是dir
在 当前本地范围内
查找名称。因此,如果filename
在函数内部定义,它将在中locals()
而不是中globals()
。
您可能想要这样的东西:
import shelve
T = 'Hiya'
val = [1, 2, 3]
def save_variables(globals_=None):
if globals_ is None:
globals_ = globals()
filename = '/tmp/shelve.out'
my_shelf = shelve.open(filename, 'n')
for key, value in globals_.items():
if not key.startswith('__'):
try:
my_shelf[key] = value
except Exception:
print('ERROR shelving: "%s"' % key)
else:
print('shelved: "%s"' % key)
my_shelf.close()
save_variables()
请注意,当globals()
从函数 内部 调用时,它将从 定义 函数的模块返回变量,而不是从其 调用的位置返回 。
因此,如果save_variables
导入了函数,并且您希望从 当前 模块中获取变量,请执行以下操作:
save_variables(globals())
大家好,我是新的Android Studio,我做了一个应用程序,自动重拨时,电话是忙后,写了我的代码,应用程序崩溃了,我不知道原因,没有什么似乎错误 这是我的猫 09-20 22:14:59.337 201 94-20201/com.fm360.AutoRedilaApp W/ART:挂起所有线程:47.386 MS 09-20 22:15:58.947 201 94-20201/com.fm3
当我试图打骗局的时候。getResponseCode()我收到连接重置异常,但在web浏览器中点击相同的url时,它正确返回了响应,但从我的代码中没有返回响应。请帮我检查一下。 我的完整堆栈跟踪是:- 请帮我解决这个问题,伙计们...谢谢...
我正在尝试将JOOQ与最新版本4.0.0的vertx一起使用。我想通过gradle生成我的DAO和表。以下是我的版本。gradle代码 它取自github链接https://github.com/jklingsporn/vertx-jooq/tree/master/vertx-jooq-classic-jdbc 但是当我运行commmand时/gradlew jooqGenerate要生成代码,它
问题内容: 我似乎找不到解决此问题的方法。我正在做的是声明一个整数,它告诉我代码不可访问。 问题答案: 一旦使用方法,您将返回到首先调用该方法的方法。返回后放置的任何语句都是没有意义的,因为那是在不严重违反程序计数器的情况下无法到达的代码(在Java中可能是不可能的)。
上面的代码在TypeScript Play中可以找到,但我在从Visual Studio 2012编译它时收到了构建错误< code >错误“以代码1退出” 有人尝试在TypeScript中获取、设置并成功构建吗?
PhpStorm 2018.2中是否可以搁置未跟踪/新文件? 这似乎不是,但我找不到一个明确的答案,这个支持问题似乎表明,至少在过去是可能的。