从ipython-notebook转换为.py
我想把一个 ipython
笔记本文件下载成 .py 文件。这个过程基本上是顺利的,但生成的 .py
文件里夹杂着 "In: []"
的标记,出现在每个单元格的边界。我可以接受它们存在,但我更希望它们不出现。
有没有简单的方法可以解决这个问题?
示例输出(我在 .py
文件中看到的内容):
# In[4]:
# Get names of all files
text_files = glob.glob('hw3data/*')
#print text_files
# In[5]:
def file_contents(file_name):
with open(file_name) as f:
return f.read()
补充:我其实是在想,是否可以让笔记本本身不输出 #In[ ]。有没有命令行选项、工具,或者某种 %magic 命令?
补充:根据 https://github.com/ipython/ipython/issues/5780 的内容,似乎建议的解决方案是使用自定义模板。来自 minrk 的回复:
这只是一个标记,用来指示单元格的位置。这是设计使然,但对 Python 没有影响,因为它只是注释。如果你想去掉这些标记,可以使用一个不添加这些注释的自定义导出模板。
2 个回答
0
作为一个临时的解决办法,我发现如果把 nbconvert
的 Python 导出模板中的第七到第九行删掉(这个模板文件在 site-packages
的 ipython/IPython/nbconvert/templates/python.tpl
路径下),就可以阻止输入提示符的输出。不过,这样做还是不太理想,因为我在修改系统包。
受影响的行:
{% block in_prompt %}
# In[{{ cell.prompt_number if cell.prompt_number else ' ' }}]:
{% endblock in_prompt %}
1
尝试一下
def rc(in_, out_):
in_ = open(in_, 'r')
out_ = open(out_,'w')
out_.write(in_.readline())
for line in in_:
if not line.lstrip().startswith('# In['):
out_.write(line)
in_.close()
out_.close()
rc('~/in_file.py', '~/out_file.py')