def test_iterar_textos(tmp_path): texto = "Hello" archivo = tmp_path.joinpath("filas.txt") guardar_texto(texto, archivo) iterable = iterar_registros(tmp_path) assert len(list(iterable)) == 1
def extraer_todos(dirin, dirout, recursivo=False, exts=None, basura=None, chars=0): """Extrae y guarda texto y metadata de archivos. Parameters ---------- dirin : str | Path Directorio donde están los documentos originales. dirout : str | Path Directorio donde se quiere guardar texto extraído. recursivo: bool Iterar recursivamente. exts: Iterable Solo considerar archivos con estas extensiones. basura : Iterable Caracteres a eliminar. chars : int Mínimo número de caracteres en una línea de texto. Returns ------- int Número de documentos procesados. """ dirdocs = Path(dirin).resolve() dirtextos = Path(dirout).resolve() dirmeta = crear_carpeta(dirtextos.joinpath("metadata")) nparts = len(dirdocs.parts) n = 0 for ruta in iterar_rutas(dirdocs, recursivo=recursivo, exts=exts): partes = ruta.parent.parts[nparts:] dirtexto = dirtextos.joinpath(*partes) if not dirtexto.exists(): dirtexto = crear_carpeta(dirtexto) archivo = dirtexto.joinpath(f"{ruta.stem}.txt") if not archivo.exists(): content, metadata = extraer_info(ruta) texto = procesar_xhtml(content, chars=chars, basura=basura) if texto: guardar_texto(texto, archivo) metaout = dirmeta.joinpath(*partes) if not metaout.exists(): metaout = crear_carpeta(metaout) metafile = metaout.joinpath(f"{ruta.stem}.json") with open(metafile, "w", encoding="utf-8") as out: json.dump(metadata, out, ensure_ascii=False) n += 1 return n
def test_iterar_registros_aleatorios(tmp_path): for i in range(10): texto = f"Hello{i}" archivo = tmp_path.joinpath(f"filas{i}.txt") guardar_texto(texto, archivo) aleatorios = iterar_registros(tmp_path, aleatorio=True) assert list(aleatorios) != list(iterar_registros(tmp_path))
def test_guardar_texto(tmp_path): texto = "Hello" archivo = tmp_path.joinpath("filas.txt") guardar_texto(texto, archivo) assert archivo.read_text(encoding="utf-8") == "Hello\n"
def test_guardar_texto_arg1(tmp_path): with pytest.raises(TypeError): archivo = tmp_path.joinpath("filas.txt") guardar_texto(archivo)