2012-05-24 26 views
5

Nie mogę znaleźć sposobu użycia ścieżek względnych w matematyce. Moja struktura katalogów jest prosta.Ścieżki względne dla notebooków przenośnych w matematyce

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

To demonstruje ścieżkę bezwzględną za pomocą ścieżki wstawiania z menu. Chcę, żeby ten notebook był przenośny. Chcę dać komuś katalog "Mathematica" i chcę, żeby mogli uruchomić kod. Nie chcę, aby ścieżki się zrywały, ponieważ będą działać na innej maszynie. Zasadniczo po prostu chcę użyć ścieżki względnej zaczynającej się od poziomu Mathematica pokazanego powyżej.

+1

Istnieje obecnie [dedykowana strona Stack Exchange Network na pytania Mathematica] (http://mathematica.stackexchange.com/), które warto rozważyć zastosowanie dla przyszłych pytań. – Verbeia

+0

'SetDirectory [$ NotebookDirectory]'? – Verbeia

+0

@Verbeia można odpowiedzieć na to pytanie z oficjalną odpowiedź, ale zmieniając odpowiedź: SetDirectory [NotebookDirectory []], a następnie ścieżkę względną importu [ "dane \\ 250 Acc.xls"] [[1]] // TableForm. ... Przyjmuję następnie Twoją odpowiedź. –

Odpowiedz

5

W Mathematica można uzyskać bieżący katalog przy użyciu Directory[] i można go ustawić na coś innego przy użyciu SetDirectory[]. Możesz wrócić do ostatniej lokalizacji, używając ReserDirectory[] lub sprawdzić wszystkie poprzednie lokalizacje, używając DirectoryStack[]. Jest to opisane w dokumentacji here.

Można ustawić bieżący katalog do katalogu, w którym notebook korzysta

SetDirectory[NotebookDirectory[]] 

Dla NotebookDirectory do pracy, należy używać przedniej części, a komputer musi być zapisany.

Zawsze można użyć ścieżki względem bieżącego katalogu (Directory[]), na przykład Import["data/somedata.txt"].

chodzi separatory katalogu: / zawsze działa na wszystkich systemach Windows/Linux/Mac. Podczas wpisywania nazwy ścieżki względnej wygodniej jest po prostu użyć / do przenoszenia niż FileNameJoin.

2

Zwykle robię to.

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

Korzystanie $ InitialDirectory dostaje katalog .nb i korzystania FileNameJoin pozwala mieć względną dostępu.

Powiązane problemy