Foros del Web » Programando para Internet » Python »

¿Como aumentar longitud de String?

Estas en el tema de ¿Como aumentar longitud de String? en el foro de Python en Foros del Web. Estoy usando la función os.listdir(path), con un string como argumento, sin embargo, me sale el siguiente error (Buffer Overflow al parecer): Cita: File "C:\Documents and ...
  #1 (permalink)  
Antiguo 13/05/2009, 16:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Busqueda ¿Como aumentar longitud de String?

Estoy usando la función os.listdir(path), con un string como argumento, sin embargo, me sale el siguiente error (Buffer Overflow al parecer):

Cita:
File "C:\Documents and Settings\Shrick\Mis documentos\Prog\Python\araña.py", line 32, in subdirectorios
archivos=os.listdir(direc)
TypeError: listdir() argument 1 must be (buffer overflow), not str
El tamaño del string que uso es de 307 carácteres más o menos, ¿Me podeis echar una mano?

Un Saludo.
  #2 (permalink)  
Antiguo 13/05/2009, 19:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ¿Como aumentar longitud de String?

Eso es por que no le estas enviando un string, al parecer estas mandando otro tipo de dato, si publicaras el contenido de direc o un poco mas del código te podríamos ayudar
  #3 (permalink)  
Antiguo 14/05/2009, 05:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ¿Como aumentar longitud de String?

Eso esta echo, envió con una pequeña corrección que me hicieron, pero sigue teniendo el fallo de arriba.

Aquí va:

Código:
import string

directorio = os.getcwd()
lista = directorio

f = open('listado.txt', 'w')

directorio = directorio.split("\\")
directorio = directorio[0]

os.chdir(directorio + "\\")


def listado():
    for file in os.listdir(directorio):
        archivo = directorio + os.path.sep + file
        if os.path.isfile(archivo):
            f.write(archivo+"\n")
        else:
            subdirectorios(archivo)

def subdirectorios(direc):
    #print direc        
    for file in os.listdir(direc):
        archivo = direc + os.path.sep + file
        if os.path.isfile(archivo):
            f.write(archivo+"\n")
        else:
            subdirectorios(archivo)

listado()

f.close()
  #4 (permalink)  
Antiguo 14/05/2009, 21:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ¿Como aumentar longitud de String?

Código python:
Ver original
  1. ###############
  2. #Plataforma: Windows
  3. #Fecha: 14/05/2009
  4. #Descripcion: Recorre la unidad actual de la cual se ejecuta el programa
  5. #y guarda la ruta del fichero en el archivo listado.txt
  6. ###############
  7. import string
  8. import os
  9.  
  10. directorio = os.getcwd()
  11. lista = directorio
  12.  
  13. f = open('listado.txt', 'w')
  14.  
  15. directorio = directorio.split("\\")
  16. directorio = directorio[0]
  17.  
  18. os.chdir(directorio + os.path.sep)
  19.  
  20.  
  21. def listado(dir):
  22.     for file in os.listdir(dir):
  23.         archivo = dir + os.path.sep + file
  24.         if os.path.isfile(archivo):
  25.             f.write(archivo+"\n")
  26.         else:
  27.             listado(archivo)
  28.  
  29. listado(directorio)
  30.  
  31. f.close()

Bueno te falto el import os, pero de ahi a me funciono muy bien no vi ningun error. Por cierto la funcion subdirectorios es la misma que la funcion listado. Asi que añadi un poco de recursividad ahorrando codigo.

;D
  #5 (permalink)  
Antiguo 15/05/2009, 13:36
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ¿Como aumentar longitud de String?

Muchas gracias por optimizarme el código, sin embargo me sigue apareciendo el mismo problema, la verdad es que no se que hacer pues si le meto la dirección a la función listdir a pelo a traves del interprete me lo lee, no hay alguna forma de aumentar el tamaño? o para dividir a varios string y luego sumarlos para que me los liste?

Cita:
File "C:\Documents and Settings\Shrick\Mis documentos\Prog\Python\araña.py", line 24, in listado
for file in os.listdir(dir):
TypeError: listdir() argument 1 must be (buffer overflow), not str
  #6 (permalink)  
Antiguo 15/05/2009, 14:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ¿Como aumentar longitud de String?

también puedes hacer un desde el cmd, o desde os.system("tree > listado.txt /F")
  #7 (permalink)  
Antiguo 16/05/2009, 08:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ¿Como aumentar longitud de String?

Ok, gracias y desde Linux como seria?
  #8 (permalink)  
Antiguo 20/05/2009, 20:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ¿Como aumentar longitud de String?

Otra forma de hacerlo seria con un try

Código python:
Ver original
  1. def listado(dir):
  2.     try:
  3.         for file in os.listdir(dir):
  4.             archivo = dir + os.path.sep + file
  5.             if os.path.isfile(archivo):
  6.                 f.write(archivo+"\n")
  7.             else:
  8.                 listado(archivo)
  9.     except TypeError:
  10.             f.write(archivo+"\n")
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:40.