MATLAB copyfile错误:参数必须包含字符串

时间:2016-08-17 01:33:35

标签: matlab file

所以我有一个非常简单的问题,我正试图解决。我想在MATLAB中创建一个文件的备份。

这是我的代码(我从当前目录启动此脚本):

backup_dir=strcat(pwd,'/backups/');
cd('../../source_destination/');
source_dir=pwd;
cd(backup_dir);

source_files=strcat(source_dir,'/*.m');
source_file_list=dir(source_files);
source_file_names={source_file_list.name}';

for i=1:numel(source_file_names)
    source_file=strcat(source_dir,'/',source_file_names(i));
    backup_file=strcat(backup_dir,source_file_names(i));
    copyfile(source_file,backup_file);
end

运行此操作会给我一个错误:

Error using copyfile
Argument must contain a string.

但是,当我实际检查source_filebackup_file时,两个变量都返回一个有效的字符串(由' '括起来),两个字符串都指向一个有效的文件:

>> source_file

source_file = 

    '/Users/me/mydir/cool/source_destination/archive.m'

>> backup_file

backup_file = 

    '/Users/me/mydir/cool/world/scripts/backups/archive.m'

此外,source_file_list的实际内容有效。

那我为什么会收到这个错误?

1 个答案:

答案 0 :(得分:1)

您需要使用大括号取消引用cell数组内容,否则strcat会返回cell字符串数组:

for i=1:numel(source_file_names)
    source_file=strcat(source_dir,'/',source_file_names{i});
    backup_file=strcat(backup_dir,source_file_names{i});
    copyfile(source_file,backup_file);
end