Borrar filtros
Borrar filtros

Reading files and writing with new extension

2 visualizaciones (últimos 30 días)
jhz
jhz el 6 de Feb. de 2020
Editada: jhz el 6 de Feb. de 2020
I am trying to read a bunch of images in a directory and after some processing I want to use image file's names to write and save a new file same as the image file names. I am close but having issue to get rid of image file extension in the new file names. When I save new file (a .txt file) using the image file name, I also get image extension. I am pasting below the code I am using, please help me to figure this out.
This code gives me output in the form, e.g; img1.jpg.txt. What I want is img1.txt.
%Specify the folder where the file live
myFolder='C:\Users\UserName\Desktop\test';
cd(myFolder);
%Check to make sure the folder actually exists
if ~isfolder(myFolder)
errorMessage=sprintf('Error: the following folder does not exist:\n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
% get the list of all files in the folder with desired file pattern/type.
filePattern=fullfile(myFolder, '*.jpg');
theFiles=dir(filePattern);
jpgFiles = cell(1, numel(theFiles));
for k=1:length(theFiles)
baseFileName=theFiles(k).name;
jpgFiles{k} = baseFileName;
end
A = [1 2 3; 4 5 6; 7 8 9];
for i=1:numel(theFiles)
txtFileName = fullfile(myFolder, sprintf([jpgFiles{i},'.txt']));
txtFileID = fopen(txtFileName, 'w');
fprintf(txtFileID, 'myHeader 1, myHeader 2 \n');
fprintf(txtFileID, '%d \n', A);
fclose(txtFileID);
end
  2 comentarios
Stephen23
Stephen23 el 6 de Feb. de 2020
You mixed up two different approaches to adding a file extension to the name, which are:
  1. [jpgFiles{i},'.txt']
  2. sprintf('%s.txt',jpgFiles{i})
Your code concatenates first and then inputs the complete filename as the format string to sprintf, which is not only completely superfluous but can change any special characters in the format string or throw errors for escaped characters that are not valid. Pick one of the above methods, but do NOT mix them together!
jhz
jhz el 6 de Feb. de 2020
I got it and thank you so much for the quick response.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 6 de Feb. de 2020
Editada: Stephen23 el 6 de Feb. de 2020
Use fileparts, something like this:
[~,fnm] = fileparts(jpgFiles{i});
fullfile(myFolder, sprintf('%s.txt',fnm))
  1 comentario
jhz
jhz el 6 de Feb. de 2020
Editada: jhz el 6 de Feb. de 2020
Thank you so much, it worked!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by