如何在嵌入式源代码中使用组织模式源块中的变量?

时间:2018-09-19 20:11:53

标签: emacs org-mode

我有一个python源代码块,可获取大熊猫数据框中的变量(列)和案例数。

最小示例:

#+begin_src python :exports none :session :results output
  df = pd.DataFrame({'a': [1, 2, 3],
                     'b': [4, 5, 6]})
  df_len_columns = len(df.columns)
  df_len_cases = len(df.index)
#+end_src

我现在想做的就是在这样的内联源代码中使用这些变量的值:

变量数为src_python{df_len_columns},案例数为src_python{df_len_cases}

但这会引发以下错误:

NameError: name 'df_len_columns' is not defined

请注意,我正在使用会话参数:session,以为它将成为同一会话的一部分并且可以正常工作。我也在网上进行了广泛搜索,但找不到针对此特定问题的解决方案(大多数问题与表的内联代码和内联代码格式有关)。

反正有实际在内联中使用这些变量吗?

2 个答案:

答案 0 :(得分:3)

您似乎需要使用标头参数告诉内联源代码引用您的会话:

src_python[:session]{df_len_columns}

一般形式为src_<language>[<header arguments>]{<body>}。组织手册中列出了可能的标头参数:Specific Header Arguments

注意:当组织文件通过org-export-dispatch导出时,将替换该值。

答案 1 :(得分:0)

如果我理解正确,您希望将多个源块链接到同一进程。

这很简单:

#+BEGIN_SRC ipython :results output :session testing
a = 5
#+END_SRC

#+RESULTS:

#+BEGIN_SRC ipython :results value  :session testing
a
#+END_SRC

#+RESULTS:
: # Out[6]:
: : 5

在此示例中,两个源块被链接。

您还可以将所有源块缠结到一个.py文件中。 使用M-x org-babel-tangle-file,每次您运行该命令时,文件都会更新为新的缠结。