从ipython-notebook转换为.py

时间:2014-05-03 04:34:30

标签: python ipython ipython-notebook

我正在尝试将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 []。是否有命令行选项,实用程序或某种%魔法?

编辑:按https://github.com/ipython/ipython/issues/5780进行,看起来建议的解决方案只是使用自定义模板。来自minrk:

  

它只是一个标记,指示细胞的位置。它是设计的,但它对Python没有影响,因为它是一个注释。如果要删除它们,可以使用不添加这些注释的自定义导出器模板。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

作为临时黑客,我发现删除nbconvertipython/IPython/nbconvert/templates/python.tplsite-packages)的python导出模板的第7行到第9行会停止输出提示输出。这仍然不是理想的,因为我正在修改网站包。

受影响的行:

{% block in_prompt %}
# In[{{ cell.prompt_number if cell.prompt_number else ' ' }}]:
{% endblock in_prompt %}