No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Automatización de Procesos con Archivos en Blog Historias

21/22
Recursos

¿Cómo gestionar errores comunes en programación?

En cualquier proceso de programación, enfrentarse a errores es inevitable, pero también es una oportunidad para mejorar. En esta sesión nos encontramos con errores iniciales debido a un problema con los nombres de archivo en el código que se estaba utilizando. Cuando experimentes este tipo de errores, es crucial prestar atención a los mensajes de error que proporciona el sistema.

¿Por qué aparecen mensajes de error al compilar?

Los mensajes de error como los experimentados son comunes y se deben a varias posibles causas:

  • Errores de sintaxis: Como en este ejemplo, donde se originó por una omisión en el código.
  • Errores de tipo: Estos son comunes cuando los tipos de datos no coinciden con los esperados.
  • Errores de referencia: Provocados por intentar utilizar variables o funciones que no están definidas.

Aquí, un cambio en el comportamiento del código fue suficiente para resolver el problema.

¿Cómo crear un archivo de texto de forma dinámica?

Para automatizar tareas en la programación, la creación de archivos de texto puede ser una función esencial. En el contexto de un sistema de gestión como el descrito, donde se maneja un restaurante, esta funcionalidad resulta invaluable.

Ejemplo de creación y cierre de archivos en un script

Se utilizó un método para abrir, escribir y cerrar archivos de texto, como se muestra a continuación:

# Apertura y escritura en el archivo
fael_paz = "ruta/del/archivo.txt"  # Ruta dinámica para el archivo
file = open(file_paz, 'w')  # Modo de apertura en escritura
file.write("Contenido del archivo...")

# Cierre del archivo para asegurar que se guarden los cambios
file.close()

Personalización del nombre del archivo

Es posible nombrar estos archivos de manera dinámica para adaptarlos a tus necesidades:

# Formato del nombre del archivo utilizando una cadena formateada
file_name = f"Registro_{identificador}.txt"

# Escribe el nombre del archivo en un bloque de código
file_path = f"/ruta/{file_name}"

Con esta lógica, se genera un archivo cuyo nombre es variable dependiendo de los datos que se pasen al script.

¿Qué consideraciones tener al manejar múltiples archivos?

Manejar archivos desde scripts requiere rigurosidad, especialmente cuando el volumen de archivos es grande, como en el caso de la automatización en un restaurante.

¿Cómo manejar grandes volúmenes de datos?

Para asegurarte de que la automatización sea efectiva, debes:

  • Optimizar la estructura de carpetas: Asegura que los archivos se guarden en directorios organizados.
  • Usar nombres descriptivos: Ayudan a identificar rápidamente qué contiene cada archivo.
  • Implementar verificaciones de apertura y cierre: Asegúrate de que cada archivo que se abra se cierre correctamente para evitar la pérdida de datos.

En el ejemplo, después de ejecutar el script, se autogeneraron cuatrocientos ochenta archivos, indicando el número de ordenes de mesas procesadas en el restaurante.

¿Qué potencial tiene la automatización en proyectos?

El proyecto final presentado permite entender cómo la automatización optimiza procesos, algo que es aplicable en diversas industrias. Puedes:

  • Automatizar procesos complejos para ahorrar tiempo laborioso.
  • Almacenar grandes cantidades de datos organizados automáticamente.
  • Utilizar disparadores o triggers para iniciar procesos conforme a ciertas condiciones.

La capacidad de automatizar estos flujos de trabajo no solo mejora la eficiencia operacional, sino que también libera recursos valiosos para potenciar la innovación y optimización continua. Así que anímate a explorar las vastas posibilidades que la automatización puede ofrecer a tus proyectos.

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Muy buen contenido, excelente base para aplicar en los proyectos diarios.

Dato interesante: en las pruebas realizadas solo me dejó obtener bloques de hasta 30 registros. Cuando le ponía un número más grande me marcaba este error:

Request Information
RequestID:45564c54-0003-0026-3712-710eb9000000
RequestDate:Thu, 26 May 2022 10:12:03 GMT
StatusMessage:One of the query parameters specified in the request URI is outside the permissible range.
ErrorCode:OutOfRangeQueryParameterValue
ErrorMessage:One of the query parameters specified in the request URI is outside the permissible range.
RequestId:45564c54-0003-0026-3712-710eb9000000
Time:2022-05-26T15:12:03.6753047Z

Buena clase

Este es el código que usamos en el clase pero me da error al final, ya revise el código varias veces

using System;
using System.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Queue;
using Microsoft.Azure.Storage.Blob;


namespace QueueConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                   .SetBasePath(Directory.GetCurrentDirectory())
                   .AddJsonFile("appsettings.json");
             IConfiguration config = new ConfigurationBuilder()
                   .AddJsonFile("appsettings.json",true,true).Build();
            CloudStorageAccount myClient = CloudStorageAccount.Parse(config ["ConectionString"]);
            CloudQueueClient queueClient = myClient.CreateCloudQueueClient();
            CloudQueue queue = queueClient.GetQueueReference("filaprocesos");
            CloudQueueMessage peekedMessage = queue.PeekMessage();
            CloudBlobClient blobClient = myClient.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("contenedorregistros");
            container.CreateIfNotExists();
            foreach (CloudQueueMessage item in queue.GetMessages(20, TimeSpan.FromSeconds(100)))
            {
                string filePath = string.Format(@"log{0}.txt",item.Id);
                TextWriter tempFile = File.CreateText(filePath);
                var message = queue.GetMessage().AsString;
                tempFile.WriteLine(message);
                Console.WriteLine("Archivo Creado");
                tempFile.Close();

                using(var fileStream =System.IO.File.OpenRead(filePath))
                {
                    CloudBlockBlob myblob = container.GetBlockBlobReference(string.Format("log{0}.txt", item.Id));
                    myblob.UploadFromStream(fileStream);
                    Console.WriteLine("blob Creado");
                }

                queue.DeleteMessage(item);
            }
            Console.ReadLine(); 
        }    
    }
}

me aparece este erro:

Unhandled exception. Microsoft.Azure.Storage.StorageException: The specified queue does not exist.
at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](RESTCommand1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token) at Microsoft.Azure.Storage.Core.Executor.Executor.<>c__DisplayClass0_01.<ExecuteSync>b__0()
at Microsoft.Azure.Storage.Core.Util.CommonUtility.RunWithoutSynchronizationContext[T](Func1 actionToRun) at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand1 cmd, IRetryPolicy policy, OperationContext operationContext)
at Microsoft.Azure.Storage.Queue.CloudQueue.PeekMessages(Int32 messageCount, QueueRequestOptions options, OperationContext operationContext)
at Microsoft.Azure.Storage.Queue.CloudQueue.PeekMessage(QueueRequestOptions options, OperationContext operationContext)