0
私は解決しようとしているかなり単純な問題があります。私はMATLABでファイルのバックアップを作成したいと思います。ここでMATLAB copyfileエラー:引数に文字列を含める必要があります
は私のコードは、(私は私の現在のディレクトリからこのスクリプトを始めています)です:
これは私にエラーを与えて実行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_file
とbackup_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
です。
なぜこのエラーが発生しますか?あなたがそうでなければstrcat
、中括弧でcell
配列の内容を参照解除に必要
ありがとうございました! 'source_file_names(i)'は文字列を返すと誤って想定していたと思います。なぜなら、実際に表示すると、引用符で囲まれて表示され、 'source_file_names {i}'は引用符で囲まれていませんでした。 – Alex
@Alex確かに。 'cell'配列に固有の柔軟性のために、それらは実際の内容対汎用要素にアクセスするための特別な形式の参照を必要とします。これは慣れ親しんだものの、非常に強力なものです。 – TroyHaskin
私は問題がセル配列であったことを知っていますが、 'strcat'を使う代わりに' fullfile'を使うのが好きです。 IMHOは読みやすく、理解しやすい。 'fullfile(source_dir、ソースファイル名{i});' –