no tengo ni P. idea de como hacer esto

NEMESIIS

Buenas señores, el caso es que no se ni como describir esto en el titulo del tema, a ver si alguien me arroja algo de luz si hace el favor

el caso es que todos los dias tengo que hacer un tree de unos archivos que nos llegan, el formato queda de este tipo:

+---directorio
| +---directorio
| | archivo 1
| | archivo 2
| | archivo 3
| | archivo 4
| |

| ---directorio
| archivo 5
| archivo 6
|

y me piden que quede de este tipo

+---directorio
| +---directorio
| | archivo 1,archivo 2, archivo 3, archivo 4
| |

| |

| ---directorio
| archivo 5,archivo 6
|

|

bueno, realmente da igual la estructura del archivo de salida, lo que importa es que me devuelva una lista de los archivos del directorio separados por comas que es con lo que luego se va a trabajar.

valga de decir desde el principio que no tengo ni guarra de programar ni de como lo voy a hacer, pero si alguien me dice "bajo este lenguaje o haciendo esto, o incluso este comando te valdrá" me ayudaría un montón, ya que no se por donde narices tirar

muchas gracias por adelantado

Camperito

No te voy ha hacer el código, pero te lo voy a masticar un poco.

Tienes que buscar primero un comando que te permita viajar por las carpetas de tu pc, buscas la carpeta donde quieres actuar, creas un array del tamaño de la cantidad de archivos que tenga el directorio.
Luego iteras ese array y vas sacando el nombre del archivo (seguramente otro comando) y los vas concatenando uno detrás de oro separandolo con un ",".

Seguramente ya lo tengas casi terminado ya que te han dado uno base que tiene casi todo, solo tendrías que concatenar en el iterador que los muestras uno debajo de otro.

NEMESIIS

gracias camperito, no, no quiero que nadie me haga el código, faltaría mas...

¿con que lenguaje me recomendarías hacerlo?

realmente esas carpetas están en una unidad de red, cada día se crea una carpeta nueva bajo una nueva fecha por lo que creía que era mas facil que leyera el archivo que ya eh generado previamente con el tree

1 respuesta
DaRk-eXe

#3 con el lenguaje que mejor se te de.

herre
import re

ARCHIVO = re.compile(r'^(\|\s)*(?!.*?(\+|\\))(.*)')

open('tree_input.txt')

with open('tree_input.txt') as file:
    archivos = list()
    for line in file:
        if ARCHIVO.match(line):
            re_line = ARCHIVO.match(line)
            archivo = re_line.groups()[-1]
            archivos.append(archivo)
        else:
            if archivos:
                print(", ".join(archivos))
                archivos = list()
            print(line.rstrip())
    else:
        if archivos:
            print(", ".join(archivos))
            archivos = list()

Este script the python3 coge la lista que has puesto tu y la convierte en esto:

+---directorio
| +---directorio
archivo 1 , archivo 2, archivo 3 , archivo 4, 
| \---directorio
archivo 5, archivo 6, 

Ya tienes para empezar

1
NEMESIIS

muchas gracias herre, me ha servido de mucho, quizas de demasiado :D, da gusto con gente asi, luego le paso un grep o parecido para que solo me deje las lineas con archivos y ya lo tengo, te lo agradezco un montón

1 respuesta
herre

#6 Si solo quieres líneas con archivos elimina

print(line.rstrip())

No hay de que hombre.

Usuarios habituales

  • herre
  • NEMESIIS
  • DaRk-eXe
  • Camperito