Error using copyfile from a changing directory

1 visualización (últimos 30 días)
Calabrese
Calabrese el 1 de Sept. de 2015
Editada: Calabrese el 2 de Sept. de 2015
I am pulling a file to read in from an always changing directory. I would like to copy this file into a directory I have it for storage and further data analysis.
this_folder = pwd
[data, path] = uigetfile('*csv')
data2 = fullfile(path, data)
do some processing then when I am finished
f_all = fullfile(this_folder, 'data_plots\All_data_plots')
copyfile(data,f_all)
I get the error:
Error using copyfile
Argument must contain a string
The problem is data, data2, f_all, path, and this_folder are all characters so I am not sure what it means by must contain a string.
  5 comentarios
per isakson
per isakson el 1 de Sept. de 2015
"class char for all" &nbsp Are you sure?
>> copyfile( 'abc', 'def' )
Error using copyfile
No matching files were found.
>> copyfile( 1, 'def' )
Error using copyfile
Argument must contain a string.
and clicking the Cancel-button
>> [ file, folder ] = uigetfile('*.csv')
file =
0
folder =
0
Calabrese
Calabrese el 2 de Sept. de 2015
Editada: Calabrese el 2 de Sept. de 2015
Using a different variable besides path gets rid of the error I was getting. I am not sure why if in the beginning I reassign the reserved variable but I won't complain.
However I when I tried copying the file using the path in the file name it still gives me an error.
copyfile(data2,f_all)
I decided to just change my directory temporarily to perform the function
cd(folder)
f_all = fullfile(this_folder, 'data_plots\All_data_plots')
copyfile(data,f_all)
cd(this_folder)
and that works

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 1 de Sept. de 2015
If the user cancels uigetfile() then the file output (which you call "data") will return a numeric value rather than a character.
If you use uigetfile() with Multiselect turned on, then the file output will return as a cell array of strings, even if only one value is chosen by the user.
  3 comentarios
Walter Roberson
Walter Roberson el 1 de Sept. de 2015
uigetfile() uses the native file choice interfaces so it looks different for each operating system. For OS-X, in the bottom right corner there will be the normal "Open" button to select the file, but just to the left of that there will be a "Cancel" button. If the user chooses to Cancel then the output is not a character string.
Calabrese
Calabrese el 2 de Sept. de 2015
I am not canceling anything though, I am simply saving the path of I folder I get to a variable so I could use it again later to copy the file. The solution to the error I was getting to use a different variable instead of path.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Search Path en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by