在interactive_mode和script_mode之间交换数据?

时间:2017-08-10 08:16:46

标签: python

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

my_data = [1, 2, 3, 4] #please note this is output after running not data in script

现在我切换到在控制台中工作以调试代码。 我需要使用刚刚生成的数据,而不能直接复制以避免乱码的影响。 我的解决方案是首先在script_mode中pickle并在interactive_mode中解开它:

包含5个命令的代码:

脚本模式

import pickle

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

Interactive_mode:

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.

如何以较少的步骤完成?

3 个答案:

答案 0 :(得分:2)

您可以使用-i选项运行该文件,例如python -i your_file_name.py

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

答案 1 :(得分:2)

如果您的/path/to/your/project目录中有脚本your_script.py,请执行以下操作:

my_data = [1, 2, 3, 4]

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

$ python
>>> execfile('/path/to/your/project/your_script.py')

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

>>> exec(open('/path/to/your/project/your_script.py').read(), globals())

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

>>> my_data
[1, 2, 3, 4]

答案 2 :(得分:1)

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

pip install IPython

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

import IPython

位于文件顶部并使用:

IPython.embed()

你想进去的地方。

您可以输入" whos"一旦你输入了一个变量列表以及它们的类型和值。这非常有用,但是,这应该适合你。 IPython是一个可靠的python shell。

如果您更习惯标准pdb,也可以使用ipdb。它也非常好。