2012-05-24 6 views
5

No encuentro cómo usar rutas relativas en mathematica. Mi estructura de directorio es simple.Rutas relativas para portátiles portátiles en mathematica

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

Eso Demuestra la ruta absoluta utilizando la ruta de inserción de los menús. Quiero que este portátil sea portátil. Quiero darle a alguien el directorio "Mathematica" y quiero que puedan ejecutar el código. No quiero que las rutas se rompan porque se ejecutará en una máquina diferente. Básicamente, solo quiero usar una ruta relativa comenzando en el nivel de Mathematica que se muestra arriba.

+1

Ahora hay un [sitio dedicado de StackExchange para preguntas de Mathematica] (http://mathematica.stackexchange.com/), que es posible que desee considerar para futuras consultas. – Verbeia

+0

'SetDirectory [$ NotebookDirectory]'? – Verbeia

+0

@Verbeia ¿Puede responder a esta pregunta con una respuesta oficial pero cambiando su respuesta a: SetDirectory [NotebookDirectory []] y luego la ruta relativa Importar ["Datos \\ 250 Acc.xls"] [[1]] // TableForm. ... Luego aceptaré su respuesta –

Respuesta

5

En Mathematica puede obtener el directorio actual usando Directory[] y puede establecerlo en otra cosa usando SetDirectory[]. Puede volver a la última ubicación usando ReserDirectory[] o verificar todas las ubicaciones anteriores usando DirectoryStack[].

Esto se describe en la documentación here.

puede establecer el directorio actual al directorio donde el portátil está utilizando

SetDirectory[NotebookDirectory[]] 

Para NotebookDirectory a trabajar, debe utilizar la interfaz y el ordenador portátil debe estar guardado.

Siempre puede usar la ruta relativa al directorio actual (Directory[]), por ejemplo Import["data/somedata.txt"].

En cuanto a los separadores de directorios: / siempre funciona, en todos los de Windows/Linux/Mac. Cuando escribe un nombre de ruta relativo, es mucho más conveniente usar / para portabilidad que FileNameJoin.

2

Normalmente hago esto.

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

Usando $ InitialDirectory le consigue el directorio .nb y el uso de FileNameJoin le permite tener acceso relativo.

Cuestiones relacionadas