List only *.csv files

  !plFile.open(file_list, O_CREAT|O_WRITE);

Not sure what the ! is doing there. I would also recommend that you do some error checking to see if the file is opened.

and add a ! it seems to go in to an infinite loop

which indicates that the call is failing.

The sdFat library uses openNext() exclusively. Many other libraries use a combination of openFirst() and then openNext(). You may need to check if that applies to the library you are using. If that is the case, then you need to change the file checking logic to be initialised outside the loop, something like:

file = OpenFirst()
while (file is open)
do stuff
file = openNext()
end while