我有一个剧本叫“poc.py公司“接受一个位置命令行参数”输入文件.txt". 这个poc.py公司脚本使用argparse处理位置命令行参数,然后将args dict传递给main()。在main()中,我读取输入文件,进行一些处理,创建一个pandas DataFrame,最后绘制数据。我在操作数据帧和控制生成的绘图的确切格式方面遇到了困难,所以我想尝试ipython以交互方式探索这一点,看看能否更好地掌握处理pandas/matplotlib的“pythonic”方式。在
所以我尝试使用ipython并运行一个脚本,但是我不能让ipython保留我脚本的名称空间。在
我试过了:$ ipython --pylab -i poc.py inputfile.txt
它可以很好地运行我的脚本,并显示绘图(即使没有阻塞plt.show()调用),但是当脚本完成时,ipython who和{}命令会显示{}。同样,如果我首先进入ipython shell,然后执行以下操作:
^{pr2}$
当脚本完成后(同样,大量的输出,出现了图),我得到了相同的结果:一个空的交互式名称空间。在
在理解如何运行外部和使用ipython交互式地探索脚本中的数据/对象方面,我缺少什么?在
下面是如何设置脚本(poc.py)的简单示例:import numpy as np
import matplotlib as plt
import pandas as pd
# etc ...more libraries and custom functions here...
def main(args):
data = np.genfromtxt(args.inputfile)
# (omitted)...more data processing / manipulation...
pdata = pd.DataFrame(data)
# (omitted)...more data processing / manipulation...
plt.plot(pdata)
# (omitted)...some formatting of the matplotlib/axes/figure objects
plt.show()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='''some program...''')
parser.add_argument('inputfile', help='path to input file')
args = parser.parse_args()
main(args)