There are some files in a directory. I have used of SetDiroctory to access all of them.
SetDirectory["C:\\Users\\SE7EN\\Desktop\\mathematica\\test"];
I can visit all theirs contents with
filenames = FileNames[]
{"Ronaldo.txt", "Messi.txt", "Beckenbauer.txt", "Zeydane.txt"}
loaddata[filenumber_] := Import[Part[FileNames[], filenumber]]
For example:
loaddata[4] 2 8 7 13 77
These are contents of Zeydane file. But I want to have imported files with the respectively devoted names. For example, desired result after that process, (which I do not know how it can be done), be same as bellow:
Ronaldo={2,3,5,8,0,1}
Messi={21,2,45,6}
Beckenbauer={11,42,5,2,7,21}
Zeydane={2,8,7,13,77}
One way is: importing them separately, Messi=Import{.....,'data'}
. But it is not the desired process, The desired process must be done automatically. Automatically importing data from directory and devoting their names in that directory to the imported list.
Thanks in advance.
Answer
I like Yves Klett's method a lot, and if you are making the kind of substitutions he illustrates it is the way to go. However here is how to do just what you requested, as well as another alternative using "indexed objects."
Set @@ Append[ToHeldExpression @ FileBaseName @ #, Import @ #] & /@ filenames
(ToHeldExpression
is a deprecated function but still entirely usable and handy.)
And now indexed objects with strings as keys:
(data[FileBaseName @ #] = Import[#]) & /@ filenames
This is used with e.g.:
data["Ronaldo"]
{2,3,5,8,0,1}
data /@ {"Beckenbauer", "Zeydane"}
{{11, 42, 5, 2, 7, 21}, {2, 8, 7, 13, 77}}
Comments
Post a Comment