0

I have 101 files with data that I want to import into Mathematica. All the file names are numbered as follows datafile.20.0000.out, datafile.20.1000.out, datafile.20.2000.out and so on. I used the solution posted here Importing multiple files using a for-loop

However, the problem I am facing is the zeros at the end. I tried using

z = Table[i, {i, 20, 30, 0.1}]

Data = 
  Table[
    Import["C:\\Dropbox\\Sims\\datafile." <> 
      ToString[NumberForm[z[[j]], {6, 4}]] <> ".out", "Data"], 
    {j, 20, 30, 0.1}]

But I'm getting error messages.

I would like to retrieve date of each file by Data[[20]], Data[[20.1]] and so on.

HuShu
  • 439
  • 2
  • 14
  • 1
    what is the first file name? is it datafile.20.0000.out? so what is the last file full name? is it datafile.20.1010.out ? You can't have an index that is not discrete. So index 20.1 will not work. – Nasser Oct 09 '14 at 04:35
  • 1
    Just for starters, Data[[20.1]] is invalid syntax, list indices must be integers. – m_goldberg Oct 09 '14 at 04:37
  • Yes, the first one is datafile.20.0000 and the last one is datafile.30.0000. Yeah I made a mistake with the index. I suppose Data[[1]], Data[[2]] and so on storing datafile.20.0000, datafile.20.1000 and so on respectively. – HuShu Oct 09 '14 at 05:04
  • What error messages are you getting? – Ymareth Oct 09 '14 at 07:51

3 Answers3

5

You can use FileNames to get list of .out files

data = Import[#, "Data"] &/@ FileNames["datafile.*.out", "C:\\Dropbox\\Sims\\", 1]
2

A little integer and string hacking generates all and only the names required.

Data = Table[s = ToString[j]; 
  Import["C:\\Dropbox\\Sims\\datafile." <> StringTake[s, 2] <> "." <> 
  StringDrop[s, 2] <> ".out", "Data"], {j, 200000, 300000, 1000}]
Bill
  • 12,001
  • 12
  • 13
1

You could also use:

data= Import["c:\\dropbox\\sims\\datafile.20." 
<> IntegerString[#, 10, 4] <> ".out" ]& /@ Range[1000]
ubpdqn
  • 60,617
  • 3
  • 59
  • 148