首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在interactive_mode和script_mode之间交换数据?

在interactive_mode和script_mode之间交换数据?
EN

Stack Overflow用户
提问于 2017-08-10 16:16:46
回答 3查看 198关注 0票数 4

假设在script_mode中运行一段代码并产生这样的数据:

代码语言:javascript
复制
my_data = [1, 2, 3, 4] #please note this is output after running not data in script

现在我切换到控制台来调试代码。我需要使用刚刚生成的数据,而不能直接复制,以避免胡言乱语的效果。我的解决方案是首先在script_mode中进行酸洗,然后在interactive_mode中取消酸洗:

使用5个命令的代码:

脚本模式

代码语言:javascript
复制
import pickle

with open('my_data','wb') as file:
        pickle.dump(my_data, file)

Interactive_mode:

代码语言:javascript
复制
import os, pickle
# change to the working directory
os.chdir('~\..\')
with open('my_data', 'rb') as file:
         my_data = pickle.load(file)
# my_data is finally loaded in console
# then manipulate it on the console.

如何在更少的步骤中做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-19 16:54:28

您可以像python -i your_file_name.py一样使用-i选项运行该文件。

这将首先运行您的文件,然后打开一个交互式shell,其中包含所有存在并可供使用的变量。

票数 2
EN

Stack Overflow用户

发布于 2017-10-21 04:18:47

如果在/path/to/your/project目录中有如下脚本your_script.py

代码语言:javascript
复制
my_data = [1, 2, 3, 4]

如果要在Python 2交互式shell中调试脚本,可以执行以下操作:

代码语言:javascript
复制
$ python
>>> execfile('/path/to/your/project/your_script.py')

或者,使用Python 2+3方式:

代码语言:javascript
复制
>>> exec(open('/path/to/your/project/your_script.py').read(), globals())

内置函数exec()支持Python代码的动态执行。内置函数globals()返回当前的全局字典。这样你就可以访问你的数据:

代码语言:javascript
复制
>>> my_data
[1, 2, 3, 4]
票数 2
EN

Stack Overflow用户

发布于 2017-10-24 08:42:08

就我个人而言,我会使用IPython,只是:

代码语言:javascript
复制
pip install IPython

然后在您想放入控制台的任何地方,只需

代码语言:javascript
复制
import IPython

在文件的顶部,使用:

代码语言:javascript
复制
IPython.embed()

你想顺道去的地方。

一旦输入变量列表以及变量的类型和值,就可以输入"whos“。这是非常有用的,但这对你来说应该是有效的。IPython是一个可靠的python shell。

如果您更习惯于标准pdb,也可以使用ipdb。它也真的很棒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45608091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档