Matlab - error :"El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso"

 
Vista:
sin imagen de perfil

error :"El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso"

Publicado por jhon (8 intervenciones) el 09/03/2016 17:29:16
hola, estoy aplicando el siguiente codigo para clasificar unos archivos en formatos txt respecto a un valor que tiene registrado en su interior. el problema es que para unos archivos si funciona y para otros sale el error : El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso. y en realidad no lo estoy usando, ni lo tengo abierto ni nada. entonces no se lo que pasa, podrian ayudarme??
parametros de entrada: direccion de donde se encuentran los archivos txt.

salida= una carpeta llamada "RESULTADOS" en la cual contiene otras carpetas con nombre segun la temperatura que tienen registrados lo archivos txt, es decir, en la carpeta temp_221 contiene archivos con temperatura registrada de 22.1°.

function x=clasificar_temp(dire)


cd (dire);
files = dir('Test*.txt'); % Leemos archivos solo txt
N = length(files); % Cuantos archivos se leyeron (N)

for i=1:N
fid=fopen(files(i).name);
for t=1:2 %llegamos ala linea 2 donde esta canal (ch)
tline=fgetl(fid);
end

trufal=tline(8);
for j=1:4 % leemos hasta la linea 4 donde está la Temp
tline = fgetl(fid);

end

if trufal=='T' % comprueba si el canal 0 esta habilitado.
%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%end
Temp(i) = str2double(tline(51:60));
nombrecar(i)=str2double(tline(51:54));
fclose(fid);

else

%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%disp(tline); %muestra lo que esta dentro del txt
%end
Temp(i) = str2double(tline(72:80));
nombrecar(i)=str2double(tline(72:75));

end
end


%disp (Temp);



%sentencias necesarias para crear las carpetas de temp
[stat,struc] = fileattrib;
PathCurrent = struc.Name;

%clasificar a 21,2 grados y 21.4
for h=1:N
antesnom='temp_';
e=num2str(nombrecar(1,h));
despuesnom=e;

antes=dire;
medio='\Test';
r=files(h).name;
t=length(r);
despues=r(5:t);

antesdirsalida=dire;
mediodirsalida='\RESULTADOS\temp_';
y=num2str(nombrecar(1,h));
despuesdirsalida=y;
direccion=strcat(antes,medio,despues);
direccionsalida=strcat(antesdirsalida,mediodirsalida,despuesdirsalida);

if ((21000000<Temp(1,h)) && ((Temp(1,h)<21300000)))
FolderName = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName];
mkdir([PathCurrent '/RESULTADOS'], FolderName);

movefile(direccion,direccionsalida)
else
FolderName2 = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName2];
mkdir([PathCurrent '/RESULTADOS'], FolderName2);
movefile(direccion,direccionsalida)
end
end

adjunto algunos archivos .txt los cuales tienen registrados en su interior distintas variables, pero solo tomamos la temperatura (temp); ahora, si despendiendo si es ch 0 es TRUE se toma la temperatura temp 0 o si ch 0 es FALSE se toma la temperatura temp 1. esta decicion se hace en el if del principio del codigo.

error-matlab
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

error :"El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 10/03/2016 16:52:46
El codigo si funciona bien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
function clasificar_temp(dire)
cd (dire);
files = dir('Test*.txt'); % Leemos archivos solo txt
N = length(files); % Cuantos archivos se leyeron (N)
 
for i=1:N
fid=fopen(files(i).name);
for t=1:2 %llegamos ala linea 2 donde esta canal (ch)
tline=fgetl(fid);
end
 
trufal=tline(8);
for j=1:4 % leemos hasta la linea 4 donde está la Temp 
tline = fgetl(fid);
 
end
 
if trufal=='T' % comprueba si el canal 0 esta habilitado.
%for j=1:6 % leemos hasta la linea 6 donde está la Temp 
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%end
Temp(i) = str2double(tline(51:60));
nombrecar(i)=str2double(tline(51:54));
fclose(fid);
 
else
 
%for j=1:6 % leemos hasta la linea 6 donde está la Temp 
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%disp(tline); %muestra lo que esta dentro del txt 
%end
Temp(i) = str2double(tline(72:80));
nombrecar(i)=str2double(tline(72:75));
 
end
end
 
 
%disp (Temp);
 
 
 
%sentencias necesarias para crear las carpetas de temp
[stat,struc] = fileattrib;
PathCurrent = struc.Name;
 
%clasificar a 21,2 grados y 21.4
for h=1:N
antesnom='temp_';
e=num2str(nombrecar(1,h));
despuesnom=e;
 
antes=dire;
medio='\Test';
r=files(h).name;
t=length(r);
despues=r(5:t);
 
antesdirsalida=dire;
mediodirsalida='\RESULTADOS\temp_';
y=num2str(nombrecar(1,h));
despuesdirsalida=y;
direccion=strcat(antes,medio,despues);
direccionsalida=strcat(antesdirsalida,mediodirsalida,despuesdirsalida);
 
if ((21000000<Temp(1,h)) && ((Temp(1,h)<21300000)))
FolderName = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName];
mkdir([PathCurrent '/RESULTADOS'], FolderName);
 
movefile(direccion,direccionsalida)
else
FolderName2 = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName2];
mkdir([PathCurrent '/RESULTADOS'], FolderName2);
movefile(direccion,direccionsalida)
end
end
cd ..





Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com


hola1
hola2
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

error :"El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso"

Publicado por Ivan (1 intervención) el 07/06/2016 12:14:06
Hola, tengo el mismo problema. ¿Has podido solucionarlo?

¿Tiene algo que ver con el uso del comando "dir"? Yo tambien lo uso en mi codigo.

Saludos
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