Error using copyfile from a changing directory

1 vue (au cours des 30 derniers jours)
Calabrese
Calabrese le 1 Sep 2015
Modifié(e) : Calabrese le 2 Sep 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 commentaires
per isakson
per isakson le 1 Sep 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 le 2 Sep 2015
Modifié(e) : Calabrese le 2 Sep 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

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 1 Sep 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 commentaires
Walter Roberson
Walter Roberson le 1 Sep 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 le 2 Sep 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Search Path dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by