|
rk@XXXXXXX.com (Reinhold Kainhofer) schrieb: > Ich stehe vor folgendem Problem: In einem Mathematica-Notebook > moechte ich alle Dateinamen in einem Unterverzeichnis des Notebooks > anzeigen. (Ich verwende Ihre Funktion directoryList aus > ProgrammingInMathematica.) Dazu benötige ich jedoch den Dateinamen > (bzw. das Verzeichnis) des aktuellen Notebooks. Gibt es in Mathematica > eine Funktion, die den den Pfad des Notebooks zurueckgibt? Da diese Frage wohl von allgemeinem Interesse ist, sende ich diese Antwort auch an DMUG. Eine solche Funktion gibt es, ist aber nicht dokumentiert. So bekommen Sie die Datei, die zum aktuellen Notebook gehört: In[2]:= NotebookInformation[EvaluationNotebook[]] Out[2]= {"FileName"\[Rule]FrontEnd`FileName[{$RootDirectory,"home","bellatrix", "maeder"},"DemoNotebook.nb"],"FileModificationTime"\[Rule]865266696, "MemoryModificationTime"\[Rule]26845} Jetzt können sie den Dateinamen extrahieren. Vorsicht: "FileName" ist ein String, kein Symbol, was man ja normalerweise nicht sieht. In[3]:= "FileName" /. % Out[3]= FrontEnd`FileName[{$RootDirectory,"home","bellatrix","maeder"}, "DemoNotebook.nb"] Es ist nicht schwer zu erraten, was $RootDirectory ist (ich habe das auf einem Unix-System erzeugt). Die Hüllen FrontEnd`FileName und FileName erleichtern die systemunabhängige Beschreibung von Dateinamen. Wenn Sie das Verzeichnis (die Liste im ersten Argument) als String brauchen, können Sie folgendes machen: In[4]:= %3/.FrontEnd`FileName[dir_List,_]:>ToFileName[dir] Out[4]= "/home/bellatrix/maeder/" Oder Sie verwandeln den ganzen Dateinamen in einen String: In[8]:= ToFileName[%3] Out[8]= "/home/bellatrix/maeder/DemoNotebook.nb" Irgendwann in der Zukunft werden diese FileName[{verzeichnisse...},name]- Objekte auch von Funktionen wie OpenRead[], Get[] etc. verstanden werden, aber zur Zeit noch nicht. mit freundlichen Grüßen, Roman Mäder |