Matlab - Leer iterativamente archivos, pero no son continuos

 
Vista:

Leer iterativamente archivos, pero no son continuos

Publicado por Alexandra (1 intervención) el 10/01/2018 14:26:14
Hola! Tengo problemas al querer abrir/cargar archivos en Matlab, en particular de texto (.txt), porque mis archivos no tienen una extensión fija, por ejemplo, tengo 5 archivos que se hicieron por día, pero no todos los días hay un archivo:
añomesdia.txt
160101.txt
160102.txt
160105.txt
160114.txt
160116.txt

Intenté con hacer una lista (referencia: https://rigoshome.wordpress.com/2010/11/14/obtener-una-lista-de-archivos-con-matlab/), pero "archivos" me entrega "{}", o sea no leyó los archivos de texto que hay dentro de mi carpeta, no sé por qué:
1
2
3
4
5
6
7
8
9
function out=get_list_files(path,type)
list_dir=dir(fullfile(path,type));
list_dir={list_dir.name};
out=list_dir;
end
 
C='Ubicación de la carpeta';
tipo='.txt';
archivos=get_list_files(C,tipo);

También intenté hacerlo iterativamente con un "for" abriendo el archivo con "fopen('archivo.txt')", pero ahí me complico en que no sé cómo escribir el condicional de que si no existe el día siguiente...
1
2
3
4
5
6
7
fid=[]; %lista vacía
n1=1; %contador
 
for i=160101:160116
    fid(n1)=fopen([num2str(i) '.txt']);
    n1=n1+1;
end

Cualquier comentario me sería de gran ayuda :/
Gracias de antemano

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Leer iterativamente archivos, pero no son continuos

Publicado por Daniel (264 intervenciones) el 10/01/2018 16:45:38
En la primera forma creo que te falta un asterisco para definir la extension...(tipo='*.txt') y con eso andaría

te dejo igualmente como yo lo hice:

1
2
3
4
5
6
7
8
9
ruta='E:\';
extension='*.txt';
archivos=dir(fullfile(ruta,extension));
nombres=archivos.name;
for j=1:size(archivos,1)
   fid=fopen(fullfile(ruta,nombres));
   % loque quieras hacer con el archivo
   fclose(fid);
end

La otra opción que comentas si puede realizar de dos maneras con un if exist que pruebe si el archivo existe, o con un try que lo carga siempre que el archivo existe...En general si son muchos los archivos que no existen te recomiendo el if exist y de lo contrario el try... Eso seria algo asi:
con if exist

1
2
3
4
5
6
7
8
9
10
fid=[]; %lista vacía
n1=1; %contador
 
for i=160101:160116
    try
        fid(n1)=fopen([num2str(i) '.txt']);
        n1=n1+1;
    catch me
    end
end

con try

1
2
3
4
5
6
7
8
9
10
fid=[]; %lista vacía
n1=1; %contador
 
for i=160101:160116
    nombre=[num2str(i) '.txt'];
    if exist(nombre,'file')==2
        fid(n1)=fopen([num2str(i) '.txt']);
        n1=n1+1;
    end
end

Estas ultimas maneras solo andarán bien si los archivos están en la misma carpeta que el código .m de matlab en general sería


1
2
3
4
5
6
7
8
9
10
11
fid=[]; %lista vacía
n1=1; %contador
ruta='E:\';
 
for i=160101:160116
    nombre=[num2str(i) '.txt'];
    if exist(fullfile(ruta,nombre),'file')==2
        fid(n1)=fopen(fullfile(ruta,nombre));
        n1=n1+1;
    end
end


1
2
3
4
5
6
7
8
9
10
11
fid=[]; %lista vacía
n1=1; %contador
ruta='E:\';
for i=160101:160116
    try
        nombre=[num2str(i) '.txt'];
        fid(n1)=fopen(fullfile(ruta,nombre));
        n1=n1+1;
    catch me
    end
end

Comentanos como te fue
Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar