Issue importing a sequence of numbered files with fopen
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I'm trying to import a sequence of numbered csv files with headers (Test_1.csv, Test_2.csv etc.) using fopen and concatenate them vertically, writing them to a single file with only the headers from the first file (since they are all the same). However I keep getting the error "Error using fread, invalid file identifier. Use fopen to generate a valid file identifier". I know that means that fopen has likely failed to open the file, but I cannot see what the problem is. The script is heavily based on another I found which originally opened a dialog box using uigetfile to browse for input files, but I just want it to read numbered files in sequence. Please help!
%Number of rows of headers in each file
NumHeaders = 1;
%path name
pname = 'C:\Users\mbgnrmr4\Dropbox (Research Group)\Coding stuff\MATLAB\Miscellaneous function tests\';
% Create output file name in the same folder.
outputFileName = fullfile(pname, 'finalCSVnew.csv')
fidOutput = fopen(outputFileName, 'wt');% open output file to write
V = 1:3 %File numbers that need to be imported
N = numel(V)
fidInput = cell(1,N)
filenames = cell(1,N)
for k = 1 : N
% Input file name.
filenames{k} = sprintf('Test_%01d.cpr', V(k))
thisFileName = fullfile(pname, filenames{k})
% Open input file:
fidInput{k} = fopen(thisFileName, 'rt');
%skip headers except for first file
if k ~= 1
for L = 1 : NumHeaders; fgetl(fidInput{k}); end
end
% Read text from it
thisText = fread(fidInput{k}, '*char');
% Copy to output file:
fwrite(fidOutput, thisText);
fclose(fidInput{k}); % close the input file
end
fido=fclose(fidOutput); clear fid*
% Open Windows Explorer to this folder
winopen(pname);
2 comentarios
Rik
el 16 de Jun. de 2021
This code is well-commented as uses clear variable names. It also uses functions like fullfile to construct file names. In short, this code looks perfectly fine.
Are you sure the file exists? You can even use the exist function to check prior to fopen.
Respuestas (0)
Ver también
Categorías
Más información sobre Low-Level File I/O en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!