如何安全地以编程方式删除Matlab中的文件?我所说的“安全”是指:
delete(a*)应该删除文件a*和其他任何东西!system(sprintf('rm -f %s', foo))中,foo可能是file;some_command。目前,我遇到的代码有system(sprintf('rm -f %s', foo)),其中有一些foo的卫生设施。我想用delete(foo)替换它,但是根据文档的说法,Matlabs delete-function接受通配符,因此不满足要求(1);如果输入包含*,我可能最终会删除许多文件。如何安全地删除Matlab中的文件?
当然,一种方法是通过删除foo等字符来净化:=, ()*<>!?%;。但是首先,这是一种迂回的方式,其次,这不允许我删除包含这些字符的文件。
发布于 2012-08-10 10:27:11
我能想到的最好的方法就是通过Java。您可能知道,您可以直接从Matlab生成Java语句。
还可以考虑使用逃逸作为特殊字符,而不是移除。
发布于 2012-08-10 16:18:25
不如这样吧:
function safe_delete(filename)
%# listing
d = dir(filename);
d([d.isdir]) = []; %# only files
%# skip if more than one match or no match
if isempty(d) || numel(d) > 1, return; end
%# delete file
p = fileparts(filename);
delete( fullfile(p,d(1).name) );
end这将完全删除一个文件。如果有多个匹配项,则函数不会删除任何文件。
示例:
safe_delete('file.txt') %# delete file.txt if it exists
safe_delete('/path/to/file.txt') %# also works with relative/absolute paths
safe_delete('*.txt') %# doesn't do anything
safe_delete('/path/to') %# doesn't delete directories only files发布于 2012-08-10 09:05:41
你说安全删除是什么意思?如果你想要提示符,你确定要删除.吗?好吧,Matlab (如C、C++、Perl、Python等)为您提供了编写函数的工具,该函数可以安全地包装对delete的调用。使用少量的字符串操作,您可以编写函数,只捕捉使用通配符调用delete的尝试。
或者,您要寻找的可能是recycle选项delete。
另外,请查看File | Preferences,并在打开的对话框中查看底部的Deleting files选项。
https://stackoverflow.com/questions/11898105
复制相似问题