避免覆盖文件!
内容
一个发人警醒的故事
几年前,我做了一件非常愚蠢的事,时至今日回想起来我仍然感到痛苦。我带着一个装满了数千张照片的u盘从纳米比亚的一次千载难返的旅行回来,然后开始用MATLAB编写的一段代码把这些照片下载到硬盘上。
我把u盘插入一个载体,在for循环中,我开始提取图像,把它们写进磁盘,然后从u盘上删除我去!让我非常沮丧的是,我很快发现我忘记了更改文件名,而且每个图像都覆盖了它的前身。分析!
在经历了许多痛苦之后,我最终从u盘上恢复了大部分图像——但我想那一天我老了10岁!想想看,犯这样可怕的错误是多么容易:
imd = imageDatastore (fullfile (matlabroot“工具箱”,matlab的,“imagesci”),...“FileExtensions”, {“.tif”,“使用”});numFiles =元素个数(imds.Files)%创建写目录writeDir1 = fullfile (userpath,“Test1”);如果~存在(writeDir1“dir”mkdir (writeDir1)结束为ii = 1:numFiles img = readimage(imds, ii);imwrite (img fullfile (writeDir1“Oops.png”));结束dir (writeDir1)注意,当我打算写两个文件时,我实际上只完成了用一个——最后一个!(第一张图片被覆盖了!!)
numFiles = 2 ..Oops.png
avoidOverwrite
现在再试试西蒙的avoidOverwrite:创建第二个写目录
writeDir2 = fullfile (userpath,“Test2”);如果~存在(writeDir2“dir”mkdir (writeDir2)结束为ii = 1:numFiles img = readimage(imds, ii);fn = avoidOverwrite (“Oops.png”imwrite(img, fullfile(writeDir2, fn))结束dir (writeDir2)
fn = 'Oops.png' ..Oops.png Oops_01.png
事后看来,avoidOverwrite就可以免去我莫大的痛苦!(当然,如果我想到了这种潜在的失败机制,我一开始就会避免它。但那是另一码事了!)
一如既往,我欢迎你的到来想法和意见。
- 类别:
- 选择
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。