Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2014, 21:42
eduardoh89
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Dudas sobre leer varios conjuntos de archivos en python

Hola, consulto si me podrian ayudar en esto.

Tengo este codigo en python que recoge datos de unos archivos txt, los convierte en arreglos y grafica.
Pero no se como hacerlo para que haga esto mismo pero uno pueda especificar una cantidad de archivos dinamicos, no 4 siempre, pero para eso necesito escribir el codigo una sola vez, no por archivo hacer lo mismo.

aqui va el codigo.

Código Python:
Ver original
  1. import numpy as np
  2. import matplotlib.mlab as mlab
  3. import matplotlib.pyplot as plt
  4. import math
  5. import random
  6. #import scipy.stats as st
  7.  
  8. file0 = open("valores_teoricos.txt","r")
  9. file1 = open("log_1.txt","r")
  10. file2 = open("log_2.txt","r")
  11. file3 = open("log_3.txt","r")
  12. file4 = open("log_4.txt","r")
  13.  
  14. f0_dat = file0.readlines()
  15. datos_f0 = []
  16. for i in f0_dat:
  17.     a = i.split(',')
  18.     del a[-1]
  19.     a = map(float, a)
  20.     datos_f0.append(a)
  21.  
  22. f1_dat = file1.readlines()
  23. datos_f1 = []
  24. for i in f1_dat:
  25.     a = i.split(',')
  26.     del a[-1]
  27.     a = map(float, a)
  28.     datos_f1.append(a)
  29.  
  30. f2_dat = file2.readlines()
  31. datos_f2 = []
  32. for i in f2_dat:
  33.     a = i.split(',')
  34.     del a[-1]
  35.     a = map(float, a)
  36.     datos_f2.append(a)
  37.  
  38. f3_dat = file3.readlines()
  39. datos_f3 = []
  40. for i in f3_dat:
  41.     a = i.split(',')
  42.     del a[-1]
  43.     a = map(float, a)
  44.     datos_f3.append(a)
  45.  
  46. f4_dat = file4.readlines()
  47. datos_f4 = []
  48. for i in f4_dat:
  49.     a = i.split(',')
  50.     del a[-1]
  51.     a = map(float, a)
  52.     datos_f4.append(a)
  53.  
  54. t = [] #tiempo
  55.  
  56. x1 = [] #lista tiempo
  57. y1 = [] #largo cola
  58. n1 = [] #cantidad procesados
  59. f1 = [] #fila media entre mediciones (Lq)
  60. r1 = [] #numero medio clientes en servicio (Ls)
  61. e1 = [] #espera fila (wq)
  62. a1 = [] #tiempo atencion en servidor (ws)
  63. o1 = [] #ocupacion media servidores
  64. l1 = [] #numero medio clientes en sistema (L)
  65.  
  66. x2 = []
  67. y2 = []
  68. n2 = []
  69. f2 = []
  70. r2 = []
  71. e2 = []
  72. a2 = []
  73. o2 = []
  74. l2 = []
  75.  
  76. x3 = []
  77. y3 = []
  78. n3 = []
  79. f3 = []
  80. r3 = []
  81. e3 = []
  82. a3 = []
  83. o3 = []
  84. l3 = []
  85.  
  86. x4 = []
  87. y4 = []
  88. n4 = []
  89. f4 = []
  90. r4 = []
  91. e4 = []
  92. a4 = []
  93. o4 = []
  94. l4 = []
  95.  
  96. y_t = []
  97. f_t = []
  98. r_t = []
  99. e_t = []
  100. a_t = []
  101. l_t = []
  102.  
  103. x1_prom = []
  104. y1_prom = []
  105. n1_prom = []
  106. f1_prom = []
  107. r1_prom = []
  108. e1_prom = []
  109. a1_prom = []
  110. o1_prom = []
  111. l1_prom = []
  112.  
  113. x2_prom = []
  114. y2_prom = []
  115. n2_prom = []
  116. f2_prom = []
  117. r2_prom = []
  118. e2_prom = []
  119. a2_prom = []
  120. o2_prom = []
  121. l2_prom = []
  122.  
  123. x3_prom = []
  124. y3_prom = []
  125. n3_prom = []
  126. f3_prom = []
  127. r3_prom = []
  128. e3_prom = []
  129. a3_prom = []
  130. o3_prom = []
  131. l3_prom = []
  132.  
  133. x4_prom = []
  134. y4_prom = []
  135. n4_prom = []
  136. f4_prom = []
  137. r4_prom = []
  138. e4_prom = []
  139. a4_prom = []
  140. o4_prom = []
  141. l4_prom = []
  142.  
  143. y_prom_total = []
  144. f_prom_total = []
  145. r_prom_total = []
  146. e_prom_total = []
  147. a_prom_total = []
  148. l_prom_total = []
  149.  
  150. y_desv = []
  151. f_desv = []
  152. r_desv = []
  153. e_desv = []
  154. a_desv = []
  155. l_desv = []
  156.  
  157. lamda = datos_f0[0][1]
  158. mu = datos_f0[0][2]
  159. rho = datos_f0[0][3]
  160. wq = datos_f0[0][4]
  161. ws = datos_f0[0][5]
  162. Lq = datos_f0[0][6]
  163. Ls = datos_f0[0][7]
  164. max_tiempo = min(datos_f1[-1][1],datos_f2[-1][1],datos_f3[-1][1],datos_f4[-1][1])
  165. ventana = 10 # ventana de 10 unidades de tiempo
  166. t = range(0, int(math.floor(max_tiempo)), ventana)
  167.  
  168.  
  169. for j in range(len(datos_f1)):
  170.     x1.append(datos_f1[j][1])
  171.     y1.append(datos_f1[j][2])
  172.     n1.append(datos_f1[j][0])
  173.     a1.append(datos_f1[j][5])
  174.     e1.append(datos_f1[j][4])
  175.     f1.append(datos_f1[j][6])
  176.     r1.append(datos_f1[j][7])
  177.     l1.append(datos_f1[j][6]+datos_f1[j][7])
  178.  
  179. for j in range(len(datos_f2)):
  180.     x2.append(datos_f2[j][1])
  181.     y2.append(datos_f2[j][2])
  182.     n2.append(datos_f2[j][0])
  183.     a2.append(datos_f2[j][5])
  184.     e2.append(datos_f2[j][4])
  185.     f2.append(datos_f2[j][6])
  186.     r2.append(datos_f2[j][7])
  187.     l2.append(datos_f2[j][6]+datos_f2[j][7])
  188. for j in range(len(datos_f3)):
  189.     x3.append(datos_f3[j][1])
  190.     y3.append(datos_f3[j][2])
  191.     n3.append(datos_f3[j][0])
  192.     a3.append(datos_f3[j][5])
  193.     e3.append(datos_f3[j][4])
  194.     f3.append(datos_f3[j][6])
  195.     r3.append(datos_f3[j][7])
  196.     l3.append(datos_f3[j][6]+datos_f3[j][7])
  197.  
  198. for j in range(len(datos_f4)):
  199.     x4.append(datos_f4[j][1])
  200.     y4.append(datos_f4[j][2])
  201.     n4.append(datos_f4[j][0])
  202.     a4.append(datos_f4[j][5])
  203.     e4.append(datos_f4[j][4])
  204.     f4.append(datos_f4[j][6])
  205.     r4.append(datos_f4[j][7])
  206.     l4.append(datos_f4[j][6]+datos_f4[j][7])
  207. j=0
  208. for i in range(len(y1)):
  209.     if j == len(t)-1: # para que no intente acceder a t[len(t)] que no existe
  210.         break
  211.     if x1[i] < t[j+1]:
  212.         y_t.append(y1[i])
  213.         f_t.append(f1[i])
  214.         r_t.append(r1[i])
  215.         e_t.append(e1[i])
  216.         a_t.append(a1[i])
  217.         l_t.append(l1[i])
  218.     else:
  219.         y1_prom.append(np.mean(y_t))
  220.         f1_prom.append(np.mean(f_t))
  221.         r1_prom.append(np.mean(r_t))
  222.         e1_prom.append(np.mean(e_t))
  223.         a1_prom.append(np.mean(a_t))
  224.         l1_prom.append(np.mean(l_t))
  225.         j=j+1
  226.         del y_t[:]
  227.         del f_t[:]
  228.         del r_t[:]
  229.         del e_t[:]
  230.         del a_t[:]
  231.         del l_t[:]
  232.         y_t.append(y1[i])
  233.         f_t.append(f1[i])
  234.         r_t.append(r1[i])
  235.         e_t.append(e1[i])
  236.         a_t.append(a1[i])
  237.         l_t.append(l1[i])
  238.  
  239. del y_t[:]
  240. del f_t[:]
  241. del r_t[:]
  242. del e_t[:]
  243. del a_t[:]
  244. del l_t[:]
  245. j=0
  246. for i in range(len(y2)):
  247.     if j == len(t)-1:
  248.         break
  249.     if x2[i] < t[j+1]:
  250.         y_t.append(y2[i])
  251.         f_t.append(f2[i])
  252.         r_t.append(r2[i])
  253.         e_t.append(e2[i])
  254.         a_t.append(a2[i])
  255.         l_t.append(l2[i])
  256.     else:
  257.         y2_prom.append(np.mean(y_t))
  258.         f2_prom.append(np.mean(f_t))
  259.         r2_prom.append(np.mean(r_t))
  260.         e2_prom.append(np.mean(e_t))
  261.         a2_prom.append(np.mean(a_t))
  262.         l2_prom.append(np.mean(l_t))
  263.         j=j+1
  264.         del y_t[:]
  265.         del f_t[:]
  266.         del r_t[:]
  267.         del e_t[:]
  268.         del a_t[:]
  269.         del l_t[:]
  270.         y_t.append(y2[i])
  271.         f_t.append(f2[i])
  272.         r_t.append(r2[i])
  273.         e_t.append(e2[i])
  274.         a_t.append(a2[i])
  275.         l_t.append(l2[i])
  276.  
  277. del y_t[:]
  278. del f_t[:]
  279. del r_t[:]
  280. del e_t[:]
  281. del a_t[:]
  282. del l_t[:]
  283. j=0
  284. for i in range(len(y3)):
  285.     if j == len(t)-1:
  286.         break
  287.     if x3[i] < t[j+1]:
  288.         y_t.append(y3[i])
  289.         f_t.append(f3[i])
  290.         r_t.append(r3[i])
  291.         e_t.append(e3[i])
  292.         a_t.append(a3[i])
  293.         l_t.append(l3[i])
  294.     else:
  295.         y3_prom.append(np.mean(y_t))
  296.         f3_prom.append(np.mean(f_t))
  297.         r3_prom.append(np.mean(r_t))
  298.         e3_prom.append(np.mean(e_t))
  299.         a3_prom.append(np.mean(a_t))
  300.         l3_prom.append(np.mean(l_t))
  301.         j=j+1
  302.         del y_t[:]
  303.         del f_t[:]
  304.         del r_t[:]
  305.         del e_t[:]
  306.         del a_t[:]
  307.         del l_t[:]
  308.         y_t.append(y3[i])
  309.         f_t.append(f3[i])
  310.         r_t.append(r3[i])
  311.         e_t.append(e3[i])
  312.         a_t.append(a3[i])
  313.         l_t.append(l3[i])
  314.  
  315. del y_t[:]
  316. del f_t[:]
  317. del r_t[:]
  318. del e_t[:]
  319. del a_t[:]
  320. del l_t[:]
  321. j=0
  322. for i in range(len(y4)):
  323.     if j == len(t)-1:
  324.         break
  325.     if x4[i] < t[j+1]:
  326.         y_t.append(y4[i])
  327.         f_t.append(f4[i])
  328.         r_t.append(r4[i])
  329.         e_t.append(e4[i])
  330.         a_t.append(a4[i])
  331.         l_t.append(l4[i])
  332.     else:
  333.         y4_prom.append(np.mean(y_t))
  334.         f4_prom.append(np.mean(f_t))
  335.         r4_prom.append(np.mean(r_t))
  336.         e4_prom.append(np.mean(e_t))
  337.         a4_prom.append(np.mean(a_t))
  338.         l4_prom.append(np.mean(l_t))
  339.         j=j+1
  340.         del y_t[:]
  341.         del f_t[:]
  342.         del r_t[:]
  343.         del e_t[:]
  344.         del a_t[:]
  345.         del l_t[:]
  346.         y_t.append(y4[i])
  347.         f_t.append(f4[i])
  348.         r_t.append(r4[i])
  349.         e_t.append(e4[i])
  350.         a_t.append(a4[i])
  351.         l_t.append(l4[i])
  352.  
  353. for k in range(len(y1_prom)):
  354.     y_prom_total.append(np.mean([y1_prom[k], y2_prom[k], y3_prom[k], y4_prom[k]]))
  355.     f_prom_total.append(np.mean([f1_prom[k], f2_prom[k], f3_prom[k], f4_prom[k]]))
  356.     r_prom_total.append(np.mean([r1_prom[k], r2_prom[k], r3_prom[k], r4_prom[k]]))
  357.     e_prom_total.append(np.mean([e1_prom[k], e2_prom[k], e3_prom[k], e4_prom[k]]))
  358.     a_prom_total.append(np.mean([a1_prom[k], a2_prom[k], a3_prom[k], a4_prom[k]]))
  359.     l_prom_total.append(np.mean([l1_prom[k], l2_prom[k], l3_prom[k], l4_prom[k]]))
  360.  
  361.  
  362. del t[-1] # hacer que len(t)==len(_prom_total) para poder graficar
  363.  
  364. line, = plt.plot(t, y_prom_total, 'g-', linewidth=1)
  365. plt.xlabel('Tiempo')
  366. plt.ylabel('Largo fila')
  367. plt.title(r'Evolucion temporal del largo de la fila con $\lambda={}$, $\mu={}$')
  368. plt.figure()
  369.  
  370. line, = plt.plot(t, f_prom_total, 'g-', linewidth=1)
  371. plt.plot(t, [Lq] * len(t), 'r--')
  372. plt.xlabel('Tiempo')
  373. plt.ylabel('Largo fila promedio')
  374. plt.title(r'Largo promedio de la fila por unidad de tiempo (Lq) con $\lambda={}$, $\mu={}$')
  375. plt.figure()
  376.  
  377. line, = plt.plot(t, l_prom_total, 'g-', linewidth=1)
  378. plt.plot(t, [(Lq+Ls)] * len(t), 'r--')
  379. plt.xlabel('Tiempo')
  380. plt.ylabel('Clientes')
  381. plt.title(r'Numero medio de clientes en el sistema (L) con $\lambda={}$, $\mu={}$')
  382. plt.figure()
  383.  
  384. line, = plt.plot(t, a_prom_total, 'g-', linewidth=1)
  385. plt.plot(t, [ws] * len(t), 'r--')
  386. plt.xlabel('Tiempo')
  387. plt.ylabel('Tiempo atencion')
  388. plt.title(r'Tiempo medio de atencion de un cliente en servidor (ws) con $\lambda={}$, $\mu={}$')
  389. plt.figure()
  390.  
  391. line, = plt.plot(t, r_prom_total, 'g-', linewidth=1)
  392. plt.plot(t, [Ls] * len(t), 'r--')
  393. plt.xlabel('Tiempo')
  394. plt.ylabel('Clientes')
  395. plt.title(r'Numero medio de clientes en atencion (Ls) con $\lambda={}$, $\mu={}$')
  396. plt.figure()
  397.  
  398. #line, = plt.plot(x, o, '-', linewidth=1)
  399. #plt.xlabel('Tiempo')
  400. #plt.ylabel('% ocupacion')
  401. #plt.title(r'Ocupacion media de los servidores')
  402. #plt.figure()
  403.  
  404. line, = plt.plot(t, e_prom_total, 'g-', linewidth=1)
  405. plt.plot(t, [wq] * len(t), 'r--')
  406. plt.xlabel('Tiempo')
  407. plt.ylabel('Tiempo espera en fila')
  408. plt.title(r'Tiempo de espera en la fila para cada llegada (wq) con $\lambda={}$, $\mu={}$')
  409. #plt.figure()
  410.  
  411. plt.show()
  412.  
  413. file0.close()
  414. file1.close()
  415. file2.close()
  416. file3.close()
  417. file4.close()

Saludos.

Última edición por razpeitia; 11/01/2014 a las 21:49