本周文件交换精选

我们最好的用户提交

避免覆盖文件!

布雷特本周的选择是避免文件覆盖,通过西蒙Musall

内容

一个发人警醒的故事

几年前,我做了一件非常愚蠢的事,时至今日回想起来我仍然感到痛苦。我带着一个装满了数千张照片的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就可以免去我莫大的痛苦!(当然,如果我想到了这种潜在的失败机制,我一开始就会避免它。但那是另一码事了!)

一如既往,我欢迎你的到来想法和意见




发布与MATLAB®R2020b

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。