Chemins relatifs pour les portables portables en mathematica

Je ne trouve pas comment utiliser les chemins relatifs dans mathematica. Ma structure de répertoire est simple.

Import["G:\\Research\\Acc and Vel Runs\\5-24\\Mathematica\\Data\\250 \ Acc.xls"][[1]] // TableForm 

Cela illustre le chemin absolu en utilisant le chemin d’insertion à partir des menus. Je veux que ce cahier soit portable. Je veux donner à quelqu’un le répertoire “Mathematica” et je veux qu’il puisse exécuter le code. Je ne veux pas que les chemins se cassent car il sera exécuté sur une autre machine. Fondamentalement, je veux juste utiliser un chemin relatif commençant au niveau Mathematica ci-dessus.

    Dans Mathematica, vous pouvez obtenir le répertoire en cours à l’aide de Directory[] et vous pouvez le définir à l’aide de SetDirectory[] . Vous pouvez revenir au dernier emplacement à l’aide de ReserDirectory[] ou vérifier tous les emplacements précédents à l’aide de DirectoryStack[] .

    Ceci est décrit dans la documentation ici .

    Vous pouvez définir le répertoire actuel sur le répertoire utilisé par l’ordinateur portable

     SetDirectory[NotebookDirectory[]] 

    Pour que NotebookDirectory fonctionne, vous devez utiliser le frontal et le bloc-notes doit être enregistré.

    Vous pouvez toujours utiliser le chemin relatif au répertoire en cours ( Directory[] ), par exemple Import["data/somedata.txt"] .

    Concernant les séparateurs de répertoires: / va toujours fonctionner, sur tous les Windows / Linux / Mac. Lorsque vous tapez un chemin d’access relatif, il est beaucoup plus pratique d’utiliser / pour la portabilité que FileNameJoin .

    Je le fais habituellement.

     SetDirectory[ FileNameJoin[{$InitialDirectory, "dir1", "dir2"}]]; Quiet[Close["Log.txt"]]; logStream = Quiet[OpenWrite["xmlAreaTagsLog.txt"]]; xmlDoc = Import["XmlData.xml"]; 

    Utiliser $ InitialDirectory vous permet d’accéder au répertoire .nb et d’utiliser FileNameJoin vous permet d’avoir un access relatif.