• Jueves 18 de Abril de 2024, 21:17

Autor Tema:  Al ejecutar un script me aparece una linea en blanco  (Leído 1316 veces)

tirengarfio

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Al ejecutar un script me aparece una linea en blanco
« en: Lunes 5 de Abril de 2010, 20:04 »
0
Hola,

tengo el siguiente script que me elimina cualquier cosa que haya entre lineas que contengan "//inicio-borrar-inicio" y "//fin-borrar-fin". Tambien borra esas mismas  lineas que contienen las susodichas cadenas.

Código: Text
  1. import re,fileinput,os
  2.  
  3. for path, dirs, files in os.walk(path):
  4.     for filename in files:
  5.         fullpath = os.path.join(path, filename)
  6.  
  7.         # open for reading first since we need to get the text out
  8.         f = open(fullpath,'r')
  9.  
  10.         # step 1
  11.         data = f.read()
  12.  
  13.         patter = re.compile('//inicio-borrar-inicio.*?//fin-borrar-fin', re.I | re.S)
  14.         data = patter.sub("", data)
  15.  
  16.  
  17.         # step 2
  18.         f.close()
  19.  
  20.         # *now* open for writing
  21.         f = open(fullpath, 'w')
  22.  
  23.         # step 3
  24.         f.write(data)
  25.         f.close()
  26.  
  27.  

Mi problema: tras ejecutar el script sobre esto por ejemplo:

Código: Text
  1.  
  2. public function preFetchAll(Doctrine_Event $event){
  3. //inicio-borrar-inicio
  4. $a = sfContext::getInstance()->getUser()->getAttribute("passw.formulario");
  5. var_dump($a);
  6. //fin-borrar-fin
  7. foreach ($this->_listeners as $listener) {
  8.     $listener->preFetchAll($event);
  9. }
  10. }
  11.  

el resultado es este:
Código: Text
  1.  
  2. public function preFetchAll(Doctrine_Event $event){
  3.  
  4. foreach ($this->_listeners as $listener) {
  5.     $listener->preFetchAll($event);
  6. }
  7. }
  8.  

Como podeis ver hay un linea en blanco entre "public function..." y "foreach..."

¿Alguien sabe como puedo hacer para que esa linea en blanco no aparezca?

Saludos

Javi

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Al ejecutar un script me aparece una linea en blanco
« Respuesta #1 en: Miércoles 7 de Abril de 2010, 05:20 »
0
hola,
el problema que tienes es que te falta remover el EOL(end of line) que viene después del "//fin-borrar-fin", ya que estas remplazando "//inicio-borrar-inicio.*?//fin-borrar-fin" que incluye los EOL que puede haber entre "//inicio-borrar-inicio" y todo lo que haya en el medio ".?". haciendo la siguiente modificación en el código solucionarías el problema en este caso en particular.

Código: Python
  1. patter = re.compile('//inicio-borrar-inicio.*?//fin-borrar-finn', re.I | re.S)
  2.  

no se si puede haber casos donde tengas mas información en la misma linea donde se encuentra el "//fin-borrar-fin", de ser asi deberías modificar la regular expression un poco mas.

espero te sea util.

saludos

nrm

pd: siempre recuerda de poner el código completo y asegurate de que funcione, para asi evitarte preguntas sobre este. en este caso con definir la variable path se solucionaba simplemente pero a veces es difícil seguir código de otras personas.