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.

MI CÓDIGO:

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
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.

MI CÓDIGO:

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


0