6
$\begingroup$

I am wondering what exactly are the differences in using

NotebookEvaluate[filename] vs FrontEndExecute[FrontEndToken[nb, "EvaluateInitialization"]];

to evaluate cells in a given notebook.

In particular, I am referring to the discussion: Evaluate Initialization Cells of another notebook. Given my new status here, I couldn't see how I could continue with that conversation directly, so I decided to post a new queston.

The comments in the referenced question proposed these two solutions to the problem:

  • method 1.

    filename = SystemDialogInput["FileOpen"];
    NotebookEvaluate[filename, EvaluationElements -> "InitializationCell"]
    
  • method 2.

    filename = SystemDialogInput["FileOpen"];
    nb = NotebookOpen[filename];
    FrontEndExecute[FrontEndToken[nb, "EvaluateInitialization"]];
    NotebookClose[nb]
    

I am trying to solve the same problem. Taken at face value, it seems both approaches are valid. Are there any subtleties that make one preferred to the other, issues of scope/context, etc.?

$\endgroup$
  • $\begingroup$ Have you tried consulting the documentation centre ? $\endgroup$ – Sektor Jan 20 '14 at 11:39
  • $\begingroup$ Yes, and from that documentation I see no difference. i.e. two different ways to achieve the same end result. I was confused by the discussion between @AlexeyPopkov and Jacob which I took to suggest there is a difference between the two methods with regards to what happens in the FrontEnd vs kernel. $\endgroup$ – tbtom Jan 20 '14 at 15:22
  • $\begingroup$ NotebookEvaluate returns the last expression evaluated. Also, to make them more comparable you may have to add NotebookOpen[..., Visible->False] $\endgroup$ – Rojo Jan 20 '14 at 22:28
  • $\begingroup$ I suppose this may be the same case: mathematica.stackexchange.com/a/120963/5478, but I don't have time to try it now. $\endgroup$ – Kuba Aug 3 '16 at 7:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.