2012-05-24 48 views
5

我找不到如何在mathematica中使用相對路徑。我的目錄結構很簡單。mathematica中便攜式筆記本電腦的相對路徑

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

通過使用菜單中的插入路徑演示絕對路徑。我想這款筆記本是便攜式的。我想給某人一個「Mathematica」目錄,我希望他們能夠運行代碼。我不希望路徑中斷,因爲它將在不同的機器上運行。基本上我只想使用從上面顯示的Mathematica級別開始的相對路徑。

+1

現在有一個[專門用於Mathematica問題的StackExchange站點](http://mathematica.stackexchange.com/),您可能需要考慮將其用於將來的問題。 – Verbeia

+0

'SetDirectory [$ NotebookDirectory]'? – Verbeia

+0

@Verbeia你能回答這個問題的官方答案,但改變你的答案:SetDirectory [NotebookDirectory []],然後相對路徑導入[「Data \\ 250 Acc.xls」] [[1]]// TableForm。 ...我會接受你的回答 –

回答

5

在Mathematica中,您可以使用Directory[]獲取當前目錄,您可以使用SetDirectory[]將其設置爲其他值。您可以使用ReserDirectory[]返回到最後一個位置,或使用DirectoryStack[]檢查以前的所有位置。

這在文檔here中有描述。

在筆記本使用

SetDirectory[NotebookDirectory[]] 

對於NotebookDirectory工作,你可以設置當前目錄的目錄,你必須使用前端和筆記本必須保存。

您始終可以使用相對於當前目錄(Directory[])的路徑,例如Import["data/somedata.txt"]

關於目錄分隔符:/將始終適用於所有Windows/Linux/Mac。當您輸入相對路徑名時,使用/以便於攜帶比FileNameJoin更方便。

2

我通常這樣做。

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

使用$ InitialDirectory可以獲得.nb目錄,並使用FileNameJoin允許您擁有相對訪問權限。