Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 03/12/16, 21:01:32
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

interrogacion Asignar resultados 'ls' a arrays

Esta vez estoy teniendo problemas a la hora de listar archivos de un directorio con el comando 'ls'. Uso el comando ls porque éste me arroja los archivos directamente sin el resto de la ruta, de este modo me ahorro el tener que buscar y reemplazar dichas rutas, por nada, que es lo que quiero vamos: solo obtener los nombres de los archivos de un directorio.
El problema llega cuando pretendo asignar cada archivo localizado y listado por el comando ls a arrays. He intentado todo lo que se me ocurre pero no llego a ver como se podria hacer.
Además me gustaria ser capaz luego de modificar en serie todos los elementos de cada array, mediante la obción buscar y reemplazar, pero '%variable()' solo es para salida de datos, y si tento 50 arrays? No voy a ir buscando y reemplazando array por array!!!! (50 acciones, una por cada array)
Responder Con Cita


  #2  
Viejo 03/12/16, 23:34:24
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Tienes una acción de Tasker que directamente genera un array con los nombres de los archivos de una carpeta, ¿la has probado?.

Y si eso no te vale, o prefieres usar el comando de consola "ls", siempre puedes convertir una cadena de ese tipo en una array con buscar y reemplazar usando como "separador" una línea en blanco. Creo que ya te conté en otro caso cómo se hacía. Creas una variable con una línea en blanco como valor y luego usas esa variable como separador.

Lo de buscar y reemplazar en todos los elementos de un array no debería ser complicado si primero usas "Variable Join" para unir todos los elementos del array en una cadena, haces la sustitución que quieras/necesites y luego separas la cadena de nuevo para regenerar el array.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 04/12/16, 17:46:18
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Además me gustaria ser capaz luego de modificar en serie todos los elementos de cada array, mediante la obción buscar y reemplazar, pero '%variable()' solo es para salida de datos, y si tento 50 arrays? No voy a ir buscando y reemplazando array por array!!!! (50 acciones, una por cada array)
¿Te refieres a 50 arrays o un array con 50 elementos?
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 04/12/16, 18:09:53
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por danko9696 Ver Mensaje
¿Te refieres a 50 arrays o un array con 50 elementos?
Yo he entendido 50 arrays con un número indefinido de elementos.

En cualquier caso, si esas son las necesidades de la aplicación pues tendrá que hacer las 50 acciones a no ser que la parte que quiere sustituir sea la mismo en todos los casos. Si es así se podría reducir un poco el número de acciones necesarias.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 04/12/16, 18:28:22
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Yo he entendido 50 arrays con un número indefinido de elementos.

En cualquier caso, si esas son las necesidades de la aplicación pues tendrá que hacer las 50 acciones a no ser que la parte que quiere sustituir sea la mismo en todos los casos. Si es así se podría reducir un poco el número de acciones necesarias.
¿Pero 50 arrays, cada uno con un nombre de variable distinto?

Se puede tratar cada array como un elemento de otro array de nivel superior usando separadores distintos para cada nivel, por lo que no son necesarias 50 acciones. Y con la ventaja de que es muy escalable. Pudiendo manejar miles lo mismo que decenas y/o añadir más niveles con muy poco código adicional. Sin duda sería la mejor elección (aunque no fuese la más eficiente en este caso concreto) para coger práctica con arrays/bucles.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 04/12/16, 18:42:05
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Es tontería dar vueltas al tema hasta que no esté perfectamente definido. Una vez que estén claros los requisitos ya se verá la mejor solución, aunque hacerlo con acciones de Tasker seguramente no será la mejor opción sabiendo que, en palabras de su autor, el procesado de array es muy poco eficiente. Y menos con bucles, que es otro de los puntos flojos de Tasker.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 04/12/16, 18:54:09
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Es tontería dar vueltas al tema hasta que no esté perfectamente definido. Una vez que estén claros los requisitos ya se verá la mejor solución, aunque hacerlo con acciones de Tasker seguramente no será la mejor opción sabiendo que, en palabras de su autor, el procesado de array es muy poco eficiente. Y menos con bucles, que es otro de los puntos flojos de Tasker.
Por eso preguntaba si se trata realmente de 50 arrays, porque me parecen muchos para el tema en cuestión, pero quién sabe. Y el procesado de arrays es muy poco eficiente (en parte porque no son realmente arrays sino pseudoarrays) pero salvo que quiera ponerse con javascript/sqlite es la única forma de manejar convenientemente grandes cantidades de datos. Perder eficiencia puede compensar de sobra si ganas flexibilidad, escalabilidad, facilidad de mantenimiento y poder hacer copypaste para otros proyectos.
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 08/12/16, 13:15:34
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Tienes una acción de Tasker que directamente genera un array con los nombres de los archivos de una carpeta, ¿la has probado?.
Te refieres a la acción suministrada por defecto de 'Lista Archivos'?
Si es así, es la opción que evito usar. Por eso paso a utilizar el comando ls.


 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Y si eso no te vale, o prefieres usar el comando de consola "ls", siempre puedes convertir una cadena de ese tipo en una array con buscar y reemplazar usando como "separador" una línea en blanco. Creo que ya te conté en otro caso cómo se hacía. Creas una variable con una línea en blanco como valor y luego usas esa variable como separador.
Mil gracias¡ Al aplicar tu metodología ya funciona perfectamente. ;)


Lo de buscar y reemplazar en todos los elementos de un array no debería ser complicado si primero usas "Variable Join" para unir todos los elementos del array en una cadena, haces la sustitución que quieras/necesites y luego separas la cadena de nuevo para regenerar el array.[/quote]

Exactamente lo que hice. Creo que esta haciendo lo que pretendo.
Responder Con Cita
  #9  
Viejo 08/12/16, 13:23:00
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
¿Te refieres a 50 arrays o un array con 50 elementos?
Creo que me equivoqué con la terminología
Quise decir una array (%Fruta) con sus 50 elementos (%Fruta1 = Naranajas, %Fruta2 = Bananas, %Fruta3 = Fresas,...)

Nota: Lo de 50 elementos por array era simplemente por poner un ejemplo, ya que aveces puedo tener 1 o 2 o 5, o 60 o 100 o 250...
Responder Con Cita
  #10  
Viejo 08/12/16, 13:25:08
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Para quien desee seguir y ver donde uso todo esto, visitad el proyecto 'Grabado de llamadas', especificamente la funcionalidad de navegador interno del mismo.
Y para dejar más claro el tema, pues uso el comando ls para crear una lista de los archivos de la carpeta 'Entrante' o 'Saliente' del grabador. De este modo se puede visualizar una lista con todos los archivos de audio generados.

Última edición por SmartPhoneLover Día 08/12/16 a las 13:27:38.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker

Herramientas


Hora actual: 00:24:19 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /