2013-12-10 3 views
18

Sto tentando di analizzare molti file di testo con Julia e voglio eseguire il ciclo su una serie di nomi di file invece di digitare una chiamata di funzione per leggerli individualmente. Finora non sono stato in grado di trovare un modo per cercare una cartella per i file che corrispondono a un modello.Cerca file in una cartella

Esiste una funzione di libreria di base di Julia che restituirà tutti i nomi di file in una determinata cartella, corrispondenti a un determinato motivo di stringa?

La funzione equivalente in R è list.files(), se ciò aiuta a comunicare ciò che voglio.

risposta

30

Nel Julia, l'equivalente di list.files() è readdir([path])

Non v'è alcun built-in di ricerca di directory, che io sappia, ma si tratta di un one-liner:

searchdir(path,key) = filter(x->contains(x,key), readdir(path))

+0

Come supplemento: simile a 'contiene' potrebbero essere utili le seguenti funzioni:' isfile', 'isdir',' startswith', 'endswith'. – crstnbr

1

Una soluzione alternativa è quello di utilizzare il pacchetto Glob.jl. Per esempio, se avete il seguente elenco di file nella directory:

foo1.txt 
foo2.txt 
foo3.txt 
bar1.txt 
foo.jl 

e si desidera trovare tutti i file di testo che iniziano con "foo" si può scrivere

using Glob 
glob("foo*.txt") #if searching the working directory 
#output: 
#"foo1.txt" 
#"foo2.txt" 
#"foo3.txt" 
glob("foo*.txt","path/to/dir") #for specifying a different directory 
#output: 
#"path/to/dir/foo1.txt" 
#"path/to/dir/foo2.txt" 
#"path/to/dir/foo3.txt"