Python - Duda lectura de archivos en directorios

 
Vista:
sin imagen de perfil
Val: 31
Ha disminuido su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

Duda lectura de archivos en directorios

Publicado por Jacob (11 intervenciones) el 23/02/2021 16:33:36
Buenas tardes, estoy con el siguiente ejercicio y me esta surgiendo una duda que me impide continuar. Voy a explicar el problema y dejo mi código por aqui por si alguien supiera cual es el error que estoy cometiendo y me diese una solución.

PROBLEMA: Tengo guardado en mi drive personal una carpeta (colección_SFU_PLN) la cual tiene a su vez varias subcarpetas ( BOOKS, PHONES, MOVIES ... ) y cada una de estas subcarpetas contiene a su vez muchos archivos .txt. Se supone que debo recorrer cada una de esas subcarpetas, leer todos los ficheros .txt de cada una, separar el texto de esos ficheros en oraciones y por último sumar las oraciones de todos los ficheros de la carpeta correspondiente.

CARPETAS

MI CÓDIGO:

CODIGO

Asi estaba desarrollando mi código, pasandole a una funcion la ruta de cada carpeta por separado... esta funcion me devolvia una lista con los nombres de los ficheros que contenia esa carpeta.
Y despues mi idea era abrir cada uno de esos ficheros en modo lectura y a continuación utilizar sent_tokenize para dividir las frases en oraciones, contar esas oraciones con la funcion len y añadirla a unq variable suma_total para que me fuese añadiendo el número de oraciones de cada fichero de cada carpeta.

Sin embargo algo debo estar haciendo o entendiendo mal porque me da error a la hora de leer los .txt

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
#PRUEBA NUMERO 2
import os
 
ruta_carpetas = './colección_SFU_PLN/'
nombres_carpetas = os.listdir(ruta_carpetas)
 
 
#FUNCION QUE DEVUELVA EL NOMBRE DE LOS ARCHIVOS DE TEXTO DE UNA CARPETA
def buscar_archivos(ruta):
  archivos_texto = []                         #Lista vacía para introducir los archivos .txt de cada carpeta
  archivos = os.listdir(ruta)                 #lista la ruta de la carpeta donde estan los archivos
  for archivo in archivos:                        #Para cada archivo de la carpeta
    if archivo[-4:] == '.txt':                    #si termina en .txt
      archivos_texto.append(archivo)              #lo guardo en la lista "archivos_texto" = []
  return archivos_texto
 
for carpeta in nombres_carpetas:              #Para cada nombre de carpeta dentro de la ruta
  ruta = ruta_carpetas + carpeta              #actualizo la ruta con el nombre de la carpeta correspondiente a la que voy a acceder
  archivos_texto = buscar_archivos(ruta)      #Llamo a la función y actualizo la lista con los .txt dependiendo de la carpeta a la que acceda
  print(ruta)
  print(archivos_texto)
  for archivo in archivos_texto:                #Para cada archivo .txt dentro de la lista
    with open(ruta + '/' + archivo, 'r') as f:  #abrirlo en modo lectura
      f.open(archivo).readline()
                                                #separar en oraciones (sent_tokenize) y contar el nºpalabras TOTAL de
                                                #la suma de oraciones de todos los ficheros
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda lectura de archivos en directorios

Publicado por joel (901 intervenciones) el 23/02/2021 19:47:07
Hola Jacob, en la linea 23 tu abres el archivo en modo lectura y lo asignas a la variable f, y luego en la linea 24 intentas volver a abrir el archivo, cuando ya esta abierto!!
La manera correcta de obtener todo el contenido del archivo seria algo así:
1
2
with open(ruta + '/' + archivo, 'r') as f:
    contenido=f.read()

De esta manera, en la variable contenido tienes el contenido del archivo leido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 31
Ha disminuido su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

Duda lectura de archivos en directorios

Publicado por Jacob (11 intervenciones) el 23/02/2021 20:04:39
Gracias Joel, efectivamente ya me salen las oraciones :)
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