假设在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.
如何以较少的步骤完成?
答案 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。它也非常好。