<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Python - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Python - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 13:48:29 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/python/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Manejo de archivos en Python: Cómo crear, leer y escribir en un archivo ]]>
                </title>
                <description>
                    <![CDATA[ En este tutorial aprenderás a abrir un archivo, escribir en él y cerrarlo. También aprenderás a leer desde el archivo usando Python. Al final de este tutorial, deberías saber lo básico de cómo usar archivos en Python. Manejo de archivos en Python El manejo de archivos es una actividad importante ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/manejo-de-archivos-en-python-como-crear-leer-y-escribir-en-un-archivo/</link>
                <guid isPermaLink="false">67104e44408801043e04b57d</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rafael D. Hernandez ]]>
                </dc:creator>
                <pubDate>Thu, 17 Oct 2024 00:59:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/10/Author-Share-ImageFREE--4-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/file-handling-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">File Handling in Python – How to Create, Read, and Write to a File</a>
      </p><p>En este tutorial aprenderás a abrir un archivo, escribir en él y cerrarlo. También aprenderás a leer desde el archivo usando Python. Al final de este tutorial, deberías saber lo básico de cómo usar archivos en Python.</p><h2 id="manejo-de-archivos-en-python">Manejo de archivos en Python</h2><p>El manejo de archivos es una actividad importante en toda aplicación web. Los tipos de actividades que se pueden realizar en un fichero abierto están controlados por los Modos de Acceso. </p><p>Estos modos describen cómo se utilizará el archivo una vez abierto y especifican dónde se ubicará el gestor de archivo dentro del mismo. Similar a un puntero, un manejador de archivo indica dónde se deben leer o poner los datos en el archivo.</p><p> En Python, hay seis métodos o modos de acceso, que son:</p><ol><li><strong>Sólo lectura ('r'):</strong> Este modo abre los ficheros de texto sólo para lectura. El inicio del fichero es donde se encuentra el manejador. Se produce un error de E/S si el fichero no existe. Este es también el modo por defecto para abrir ficheros.</li><li><strong>Lectura y escritura ('r+'):</strong> Este método abre el fichero tanto para lectura como para escritura. Si el fichero no existe, se produce un error de E/S. Si el fichero no existe, se produce un error de E/S. </li><li><strong>Sólo escritura ('w'):</strong> Este modo abre el fichero sólo para escritura. Los datos de los ficheros existentes se modifican y sobrescriben. El inicio del fichero es donde se encuentra el manejador. Si el fichero no existe ya en la carpeta, se crea uno nuevo. </li><li><strong>Escritura y lectura ('w+'):</strong> Este modo abre el fichero tanto para lectura como para escritura. El texto se sobrescribe y se borra de un fichero existente. El inicio del fichero es donde se encuentra el manejador. </li><li><strong>Sólo añadir ('a'):</strong> Este modo permite abrir el fichero para escribir. Si el fichero aún no existe, se crea uno nuevo. El manejador se coloca al final del fichero. Los datos recién escritos se añadirán al final, a continuación de los datos escritos anteriormente. </li><li><strong>Añadir y leer ('a+'):</strong> Este método permite leer y escribir en el fichero. Si el fichero no existe, se crea uno. El manejador se coloca al final del fichero. El texto recién escrito se añadirá al final, a continuación de los datos escritos anteriormente.</li></ol><p>A continuación se muestra el código necesario para crear, escribir y leer archivos de texto utilizando los métodos de manejo de archivos o modos de acceso de Python.</p><h2 id="c-mo-crear-archivos-en-python">Cómo crear archivos en Python</h2><p>En Python, se utiliza la función <code>open()</code> con una de las siguientes opciones - "x" o "w" - para crear un nuevo archivo:</p><p>• "x" - Crear: este comando creará un nuevo archivo si y sólo si no existe ya un archivo con ese nombre o, de lo contrario, devolverá un error. </p><p>Ejemplo de creación de un archivo en Python utilizando el comando "x":</p><pre><code>#crear un archivo de texto con la función de comando "x"

f = open("myfile.txt", "x")</code></pre><p>Hemos creado un nuevo archivo de texto vacío. Pero si vuelve a intentar el código anterior - por ejemplo, si intenta crear un nuevo archivo con el mismo nombre que utilizó anteriormente (si desea reutilizar el nombre de archivo anterior) obtendrá un error notificándole que el archivo ya existe. Se verá como la imagen de abajo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/08/idle-shell.png" class="kg-image" alt="IDLE Shell showing an error that myfile.txt does not exist" width="600" height="400" loading="lazy"></figure><ul><li>"w" - Escribir: este comando creará un nuevo archivo de texto independientemente de que exista o no un archivo en la memoria con el nuevo nombre especificado. No devuelve un error si encuentra un archivo existente con el mismo nombre - en su lugar, sobrescribirá el archivo existente. </li></ul><p>Ejemplo de cómo crear un archivo con el comando "w":</p><pre><code>#crear un archivo de texto con la función de comando "w"
f = open("myfile.txt", "w")
#Este comando "w" también se puede utilizar para crear un nuevo archivo, pero a diferencia del comando "x", el comando "w" sobrescribirá cualquier archivo existente con el mismo nombre.</code></pre><p>Con el código anterior, tanto si el archivo existe como si no existe en la memoria, puedes seguir adelante y usar ese código. Sólo tenga en cuenta que sobrescribirá el archivo si encuentra un archivo existente con el mismo nombre.</p><h2 id="c-mo-escribir-en-un-archivo-en-python">Cómo escribir en un archivo en Python</h2><p>Existen dos métodos para escribir en un fichero en Python, que son:</p><h3 id="el-m-todo-write-">El método <code>write()</code>:</h3><p>Esta función inserta la cadena en el archivo de texto en una sola línea. </p><p>Basándonos en el archivo que hemos creado anteriormente, la siguiente línea de código insertará la cadena en el archivo de texto creado, que es "miarchivo.txt".</p><pre><code>file.write("Hello There\n")</code></pre><h2 id="el-m-todo-writelines-">El método <code>writelines()</code>:</h2><p>Esta función inserta múltiples cadenas al mismo tiempo. Se crea una lista de elementos de cadena y, a continuación, se añade cada cadena al archivo de texto.</p><p>Utilizando el archivo creado anteriormente, la siguiente línea de código insertará la cadena en el archivo de texto creado, que es "miarchivo.txt".</p><pre><code>f.writelines(["Hello World ", "You are welcome to Fcc\n"])</code></pre><p>Ejemplo:</p><pre><code># Este programa muestra cómo escribir datos en un fichero de texto.

file = open("myfile.txt","w")
L = ["This is Lagos \n","This is Python \n","This is Fcc \n"]

# Asigné ["Esto es Lagos \n", "Esto es Python \n", "Esto es Fcc \n"] a la # variable L, puedes usar cualquier letra o palabra de tu elección. 
# Las variables son contenedores en los que se pueden almacenar valores. 
# La \n se coloca para indicar el final de la línea.

file.write("Hello There \n")
file.writelines(L)
file.close()

# Usa close() para cambiar el modo de acceso a los ficheros</code></pre><h2 id="c-mo-leer-de-un-archivo-de-texto-en-python">Cómo leer de un archivo de texto en Python</h2><p>Existen tres métodos para leer datos de un archivo de texto en Python. Ellos son:</p><h3 id="el-m-todo-read-">El método <code>read()</code>:</h3><p>Esta función devuelve los bytes leídos en forma de cadena. Si no se especifica n, lee el fichero completo. </p><p>Ejemplo:</p><pre><code>f = open("myfiles.txt", "r")
#('r') abre los archivos de texto sólo para lectura print(f.read())
#El "f.read" imprime los datos del archivo de texto en el shell cuando se ejecuta.</code></pre><h2 id="el-m-todo-readline-">El método <code>readline()</code>:</h2><p>Esta función lee una línea de un fichero y la devuelve como cadena. Lee como máximo n bytes para la n especificada. Pero aunque n sea mayor que la longitud de la línea, no lee más de una línea.</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())</code></pre><h3 id="el-m-todo-readlines-">El método <code>readlines()</code>:</h3><p>Esta función lee todas las líneas y las devuelve como elementos de cadena en una lista, uno por cada línea. </p><p>Puede leer las dos primeras líneas llamando a readline() dos veces, leyendo las dos primeras líneas del fichero:</p><pre><code>f = open("myfiles.txt", "r")
print(f.readline())
print(f.readline())</code></pre><h2 id="c-mo-cerrar-un-archivo-de-texto-en-python">Cómo cerrar un archivo de texto en Python</h2><p>Es una buena práctica cerrar siempre el archivo cuando haya terminado de utilizarlo.</p><h3 id="ejemplo-de-cierre-de-un-archivo-de-texto-">Ejemplo de cierre de un archivo de texto:</h3><p>Esta función cierra el fichero de texto cuando termina de modificarlo:</p><pre><code>f = open("myfiles.txt", "r")
print(f.readline())
f.close()</code></pre><p>La función close() al final del código le dice a Python que bien, he terminado con esta sección de creación o lectura - es como decir Fin.</p><h3 id="ejemplo-">Ejemplo<strong>:</strong></h3><p>El siguiente programa muestra más ejemplos de formas de leer y escribir datos en un fichero de texto. Cada línea de código tiene comentarios para ayudarle a entender lo que está pasando:</p><pre><code># Programa para mostrar varias formas de leer y # escribir datos en un archivo de texto.

file = open("myfile.txt","w")
L = ["This is Lagos \n","This is Python \n","This is Fcc \n"]

#i asignó ["Esto es Lagos \n", "Esto es Python \n", "Esto es Fcc \n"]
#a la variable L

#La \n se coloca para indicar Fin de Línea

file.write("Hello There \n")
file.writelines(L)
file.close()
# usa close() para cambiar el modo de acceso al fichero


file = open("myfile.txt","r+") 
print("Output of the Read function is ")
print(file.read())
print()

# El seek(n) lleva el manejador del fichero al enésimo
# byte desde el inicio.
file.seek(0) 

print( "The output of the Readline function is ")
print(file.readline()) 
print()

file.seek(0)

# Para mostrar la diferencia entre read y readline

print("Output of Read(12) function is ") 
print(file.read(12))
print()

file.seek(0)

print("Output of Readline(8) function is ") 
print(file.readline(8))

file.seek(0)
# función readlines
print("Output of Readlines function is ") 
print(file.readlines()) 
print()
file.close()</code></pre><p>Esta es la salida del código anterior cuando se ejecuta en el shell. Asigné "Esto es Lagos", "Esto es Python", y "Esto es Fcc" a "L" y luego le pedí que imprimiera usando la función ''file.read''. </p><p>El código de arriba muestra que la función "readline()" está devolviendo la letra basada en el número que se le especificó, mientras que la función "readlines()" está devolviendo cada cadena asignada a "L" incluyendo el \n. Es decir, la función "readlines()" imprimirá todos los datos del archivo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/08/output-file.png" class="kg-image" alt="IDLE Shell showing the output of the program" width="600" height="400" loading="lazy"></figure><h2 id="conclusi-n">Conclusión</h2><p>Esperamos que, después de pasar por este tutorial, entiendas lo que es el manejo de archivos en Python. También aprendimos los modos/métodos necesarios para crear, escribir, leer y cerrar() un archivo de texto usando algunos ejemplos básicos de Python </p><p>¡Gracias por leer!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Eliminar columna en los Marcos de Datos de Pandas  - Cómo quitar columnas de los Marcos de Datos ]]>
                </title>
                <description>
                    <![CDATA[ En Pandas, a veces necesitarás eliminar columnas de un Marco de Datos por varias razones, como limpiar datos, reducir el uso de memoria o simplificar el análisis. Es por ello que en este artículo, te mostraré cómo hacerlo. Comenzaré presentando el método .drop() que es el método principal para eliminar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/eliminar-columna-en-los-dataframes-de-pandas-como-quitar-columnas-de-dataframes/</link>
                <guid isPermaLink="false">65fa679524402003fe4e4b58</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Andrés  Torres ]]>
                </dc:creator>
                <pubDate>Fri, 22 Mar 2024 18:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/03/Shittu-Olumide-Dataframe-Drop-Column-in-Pandas---How-to-Remove-Columns-from-Dataframes.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/dataframe-drop-column-in-pandas-how-to-remove-columns-from-dataframes/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Dataframe Drop Column in Pandas – How to Remove Columns from Dataframes</a>
      </p><p><strong>En Pandas, a veces necesitarás eliminar columnas de un Marco de Datos por varias razones, como limpiar datos, reducir el uso de memoria o simplificar el análisis. Es por ello que en este artículo, te mostraré cómo hacerlo.</strong></p><p>Comenzaré presentando el método <code>.drop()</code> que es el método principal para eliminar columnas en Pandas. </p><p>Repasaremos la sintaxis y los parámetros del método <code>.drop()</code>, incluyendo cómo especificar las columnas a eliminar y cómo controlar si el Marco de Datos original se modifica en su lugar o se devuelve un nuevo Marco de Datos.</p><p>A continuación, proporcionaré un ejemplo de cómo usar el método <code>.drop()</code> para eliminar columnas de un Marco de Datos.</p><h2 id="c-mo-usar-el-m-todo-drop-en-pandas">Cómo usar el método <code>.drop()</code> en Pandas</h2><p>El método <code>.drop()</code> es una función incorporada en Pandas que te permite eliminar una o más filas o columnas de un Marco de Datos. </p><p>Devuelve un nuevo Marco de Datos con las filas o columnas especificadas eliminadas y no modifica el Marco de Datos original en su lugar, a menos que establezcas el parámetro <code>inplace</code> en <code>True</code>.</p><p>La sintaxis para usar el método <code>.drop()</code> es la siguiente:</p><pre><code class="language-py">DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')</code></pre><p>Aquí, DataFrame se refiere al Marco de Datos de Pandas del cual deseas eliminar filas o columnas. Los parámetros que puedes usar con el método <code>.drop()</code> incluyen:</p><ul><li><code>labels</code>: Este parámetro especifica las etiquetas o índices de las filas o columnas que se van a eliminar. Puedes pasar una sola etiqueta o índice, o una lista de etiquetas o índices.</li><li><code>axis</code>: Este parámetro especifica si se van a eliminar filas o columnas. Por defecto, está configurado en <code>0</code>, lo que significa que se eliminan filas. Si deseas eliminar columnas, configúralo en <code>1</code>.</li><li><code>index</code> y <code>columns</code>: Estos parámetros son alternativas al parámetro de etiquetas y especifican las etiquetas o índices de las filas o columnas que se van a eliminar, respectivamente.</li><li><code>level</code>: Este parámetro se utiliza para eliminar un nivel específico de un índice jerárquico.</li><li><code>inplace</code>: Este parámetro es un valor booleano que determina si modificar el DataFrame original en su lugar. Por defecto, está configurado en <code>False</code>.</li><li><code>errors</code>: Este parámetro especifica cómo manejar errores si la(s) etiqueta(s) o índice(s) especificado(s) no se encuentran en el DataFrame. Por defecto, está configurado en <code>raise</code>, lo que significa que se genera un <code>KeyError</code>. Otras opciones son <code>ignore</code> y <code>warn</code>, que respectivamente ignorarán o mostrarán una advertencia cuando la etiqueta o índice no se encuentre.</li></ul><p>Cómo eliminar una sola columna de un Marco de Datos en Pandas</p><p>Vamos a empezar suavemente aprendiendo primero cómo eliminar una sola columna de un Marco de Datos antes de eliminar múltiples columnas.</p><p><strong>Muestra del código:</strong></p><pre><code class="language-py">#Traducción al español del código
import pandas as pd
#Creamos un marco de datos de muestra
datos = {"nombre": ['Alicia', 'Bob', 'Charlie'],
        "edad": [25, 30, 35],
        "género": ['F', 'M', 'M']
        }
df = pd.DataFrame(datos)

# Mostramos el Marco de Datos original
print("DataFrame Original:\n", df)

# Damos drop a la columna "género"
df = df.drop(columns=['género'])

# Mostramos el Marco de Datos modificado
print("DataFrame Modificado:\n", df)</code></pre><p><strong>Resultado:</strong></p><pre><code class="language-py">DataFrame Original:
     nombre  edad género
0   Alicia    25      F
1      Bob    30      M
2  Charlie    35      M
DataFrame Modificado:
     nombre  edad
0   Alicia    25
1      Bob    30
2  Charlie    35</code></pre><p>En el ejemplo anterior, primero creamos un Marco de Datos de muestra con tres columnas: <code>nombre</code>, <code>edad</code> y <code>género</code>. Luego utilizamos el método <code>.drop()</code> con el parámetro <code>columns</code> para eliminar la columna <code>género</code>. El Marco de Datos resultante solo contiene las columnas <code>nombre</code> y <code>edad</code>.</p><p>Es importante tener en cuenta que el método <code>.drop()</code> no modifica el Marco de Datos original en su lugar. En su lugar, devuelve un nuevo Marco de Datos con la(s) columna(s) especificada(s) eliminada(s). Si deseas modificar el Marco de Datos original, necesitas asignar el resultado del método <code>.drop()</code> de nuevo a la variable original, como hicimos en el ejemplo anterior.</p><p>Además del parámetro <code>columns</code>, el método <code>.drop()</code> también tiene varios otros parámetros opcionales que puedes usar para controlar cómo se eliminan las columnas.</p><p>Por ejemplo, puedes usar el parámetro <code>inplace</code> para modificar el Marco de Datos original en su lugar en lugar de devolver un nuevo Marco de Datos. También puedes usar el parámetro <code>axis</code> para eliminar columnas por índice en lugar de por nombre.</p><h2 id="c-mo-eliminar-varias-columnas-de-un-marco-de-datos-en-pandas">Cómo eliminar varias columnas de un Marco de Datos en Pandas</h2><p>En esta sección, eliminaremos varias columnas de nuestro Marco de Datos. Este enfoque es similar a eliminar una sola columna del Marco de Datos.</p><p>Para eliminar dos o más columnas de un Marco de Datos usando el método <code>.drop()</code> en Pandas, podemos pasar una lista de nombres de columnas al parámetro <code>columns</code> del método.</p><pre><code class="language-py">import pandas as pd

# creando -otra vez- un Marco de Datos
datos = {'nombre': ['John', 'Maria', 'Pedro'],
        'edad': [30, 25, 35],
        'género': ['M', 'F', 'M'],
        'ciudad': ['Ciudad de México', 'San José', 'Buenos Aires']}
df = pd.DataFrame(datos)

# Removiendo las columnas género y ciudad
df.drop(columns=['género', 'ciudad'], inplace=True)

# Damos print en el Marco de Datos modificado
print(df)
</code></pre><p><strong>Resultado:</strong></p><pre><code class="language-bash"> nombre  edad
0   John    30
1  Maria    25
2  Pedro    35</code></pre><p><strong>Explicación del código:</strong></p><p>En este ejemplo, primero creamos un Marco de Datos de muestra con cuatro columnas: <code>nombre</code>, <code>edad</code>, <code>género</code> y <code>ciudad</code>. Luego, usamos el método .drop() para eliminar las columnas <code>ciudad</code> y <code>género</code> &nbsp;pasando una lista con sus nombres al parámetro <code>columns</code>. </p><p>Finalmente, establecemos el parámetro <code>inplace</code> en <code>True</code> para modificar el Marco de Datos original e imprimir el Marco de Datos modificado.</p><p>Ten en cuenta que también puedes eliminar columnas por sus índices pasando una lista de índices al parámetro <code>columns</code>. Por ejemplo, para eliminar la segunda y tercera columnas, puedes usar:</p><pre><code class="language-py">df.drop(columns=df.columns[1:3], inplace=True)</code></pre><p>Esto eliminará las columnas con índices 1 y 2 (que son las columnas de <code>edad</code> y <code>género</code> en este ejemplo).</p><h2 id="conclusi-n">Conclusión</h2><p>Espero que este artículo sea un recurso útil para cualquier persona que trabaje con Marco de Datos de Pandas y necesite eliminar columnas de manera eficiente y efectiva.</p><p>¡Conéctate conmigo en <a href="https://www.twitter.com/Shittu_Olumide_">Twitter </a>y <a href="https://www.linkedin.com/in/olumide-shittu">LinkedIn</a>! También puedes suscribirte a mi canal de <a href="https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A">YouTube</a>.</p><p>¡Feliz Codificación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ ¿Cómo crear un directorio con Python? ]]>
                </title>
                <description>
                    <![CDATA[ En este artículo, aprenderás cómo crear nuevos directorios (que es otro nombre para las carpetas) en Python. También aprenderás a crear una estructura de directorios anidados. Para trabajar con directorios en Python, primero debes incluir el módulo os en su proyecto, que le permite interactuar con su sistema operativo. El ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-crear-un-directorio-con-python/</link>
                <guid isPermaLink="false">65f998f7fef4be04135ccd09</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Cristian Fernando Villca Gutierrez ]]>
                </dc:creator>
                <pubDate>Fri, 22 Mar 2024 18:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/03/pexels-pixabay-51191.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/creating-a-directory-in-python-how-to-create-a-folder/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Creating a Directory in Python – How to Create a Folder</a>
      </p><p>En este artículo, aprenderás cómo crear nuevos directorios (que es otro nombre para las carpetas) en Python.</p><p>También aprenderás a crear una estructura de directorios anidados.</p><p>Para trabajar con directorios en Python, primero debes incluir el módulo <code>os</code> en su proyecto, que le permite interactuar con su sistema operativo.</p><p>El módulo <code>os</code> también te permite utilizar los dos métodos que cubriremos en este artículo:</p><ul><li>el método <code>os.mkdir()</code></li><li>el método <code>os.makedirs()</code></li></ul><p>¡Comencemos!</p><h2 id="c-mo-crear-un-directorio-nico-usando-el-m-todo-os-mkdir-en-python">Cómo crear un directorio único usando el método <code>os.mkdir()</code> en Python</h2><p>Como se mencionó anteriormente, para trabajar con directorios en Python, primero debes incluir el módulo <code>os</code>. </p><p>Para hacerlo, agrega la siguiente línea de código en la parte superior de su archivo:</p><pre><code class="language-py">import os</code></pre><p>El código anterior te permitirá utilizar el método <code>os.mkdir()</code> para crear un nuevo directorio único. </p><p>El método <code>os.mkdir()</code> acepta un argumento: la ruta del directorio.</p><pre><code class="language-py">import os

# especificamos la ruta para el directorio - nos aseguramos de hacerlo entre comillas
ruta = './proyectos'

# creamos un nuevo directorio
os.mkdir(ruta)</code></pre><p>El código anterior creará un directorio de proyectos en el directorio de trabajo actual.</p><p>Ten en cuenta que <code>./</code> representa el directorio de trabajo actual. Puedes omitir esta parte y escribir proyectos solo cuando especifique la ruta; ¡el resultado será el mismo!</p><h2 id="c-mo-manejar-excepciones-al-usar-el-m-todo-os-mkdir-en-python">Cómo manejar excepciones al usar el método <code>os.mkdir</code> en Python</h2><p>Pero, ¿qué sucede cuando el directorio que estás intentando crear ya existe? Se genera una excepción <code>FileExistsError</code>:</p><pre><code class="language-py">Traceback (most recent call last):
  File "main.py", line 3, in &lt;module&gt;
    os.mkdir(ruta)
FileExistsError: [Errno 17] File exists: './proyectos'</code></pre><p>Una forma de manejar esta excepción es verificar si el archivo ya existe usando un bloque <code>if..else</code>:</p><pre><code class="language-py">import os

ruta = './proyectos'

# verificamos si el directorio ya existe
if not os.path.exists(ruta):
  os.mkdir(ruta)
  print("Directorio %s creado!" % ruta)
else:
  print("Directorio %s ya existe" % ruta)</code></pre><p>En el ejemplo anterior, primero verifica si el directorio <code>./proyectos</code> ya existe usando el método <code>os.path.exists()</code>.</p><p>Si es así, obtendré el siguiente resultado en lugar de un <code>FileExistsError</code>:</p><pre><code class="language-py">Directorio ./proyectos ya existe</code></pre><p>Si el archivo no existe, se crea una nueva carpeta de proyectos en el directorio de trabajo actual y obtengo el siguiente resultado:</p><pre><code class="language-py">Directorio ./proyectos creado!</code></pre><p>Alternativamente, puedes usar un bloque <code>try/except</code> para manejar excepciones:</p><pre><code class="language-py">import os

ruta = './proyectos'

try:
    os.mkdir(ruta)
    print("Directorio %s creado!" % ruta)
except FileExistsError:
    print("Directorio %s ya existe" % ruta)</code></pre><p>Si ya existe una carpeta de proyectos en el directorio de trabajo actual, obtendrá el siguiente resultado en lugar de un mensaje de error:</p><pre><code class="language-py">Directorio ./proyectos ya existe.</code></pre><h2 id="c-mo-crear-un-directorio-con-subdirectorios-usando-el-m-todo-os-makedirs-en-python">Cómo crear un directorio con subdirectorios usando el método <code>os.makedirs()</code> en Python</h2><p>El método <code>os.mkdir()</code> no te permite crear un subdirectorio. Este método te permite crear un directorio único.</p><p>Para crear una estructura de directorios anidados (como un directorio dentro de otro directorio), utiliza el método <code>os.makedirs()</code>.</p><p><code>os.makedirs()</code> acepta un argumento: la ruta completa de la carpeta que desea crear.</p><pre><code class="language-py">import os

# define el nombre del directorio con sus subdirectorios
ruta = './proyectos/juegos/juego01'

os.makedirs(ruta)</code></pre><p>En el ejemplo anterior, creé un directorio de proyectos en el directorio de trabajo actual.</p><p>Dentro de proyectos, creé otro directorio, <code>juegos</code>. Y dentro de <code>juegos</code>, creé otro directorio más, <code>juego01</code>.</p><h2 id="conclusi-n">Conclusión</h2><p>¡Y ahí lo tienes! Ahora sabe cómo crear un directorio único y un directorio con subdirectorios en Python. </p><p>Para obtener más información sobre Python, consulte el curso <a href="https://www.freecodecamp.org/news/python-programming-course/">Python para principiantes</a> de freeCodeCamp.</p><p>Gracias por leer y feliz codificación. </p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo automatizar tareas de Excel con Python ]]>
                </title>
                <description>
                    <![CDATA[ Excel es una herramienta sorprendentemente común para el análisis de datos. Los analistas de datos pueden modificar, examinar y mostrar grandes cantidades de datos con facilidad utilizando Excel, lo que facilita la obtención de perspectivas y la toma de decisiones acertadas. La versatilidad de Excel permite a los usuarios llevar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-automatizar-tareas-de-excel-con-python/</link>
                <guid isPermaLink="false">65f603bffef4be04135ccba4</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ análisis de datos ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Excel ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Andrés  Torres ]]>
                </dc:creator>
                <pubDate>Fri, 22 Mar 2024 18:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/03/FreecodeCamp-data-analysis.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/automate-excel-tasks-with-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Automate Excel Tasks with Python</a>
      </p><p><strong>Excel es una herramienta sorprendentemente común para el análisis de datos.</strong></p><p>Los analistas de datos pueden modificar, examinar y mostrar grandes cantidades de datos con facilidad utilizando Excel, lo que facilita la obtención de perspectivas y la toma de decisiones acertadas.</p><p>La versatilidad de Excel permite a los usuarios llevar a cabo una variedad de actividades de análisis de datos, desde operaciones matemáticas sencillas hasta análisis estadísticos complejos. Además, Excel ofrece automatización mediante el uso de programas de terceros como Python o el lenguaje de programación integrado VBA.</p><p>Excel se utiliza con frecuencia para el análisis de datos en una variedad de industrias, incluyendo la banca, la atención médica y el marketing, gracias a su versatilidad y facilidad de uso.</p><p>Pero como analista de datos, es posible que te encuentres repitiendo tareas mundanas a diario cuando trabajas con Excel.</p><p>Estas tareas pueden incluir copiar y pegar datos, dar formato a celdas y crear gráficos, entre otras. Con el tiempo, esto puede volverse monótono y consumir mucho tiempo, dejándote con menos tiempo para concentrarte en aspectos más importantes del análisis de datos, como identificar tendencias, valores atípicos y perspectivas.</p><p>Por eso, automatizar Excel utilizando Python puede cambiar el juego, ayudándote a optimizar tus flujos de trabajo y liberar tiempo para un análisis más significativo.</p><p>En este tutorial, te mostraré algunas formas útiles de crear, actualizar y analizar hojas de cálculo de Excel utilizando programación en Python. ¡Vamos a sumergirnos! </p><h2 id="-c-mo-fusionar-dos-hojas-de-c-lculo-separadas-con-python"><strong>¿Cómo fusionar dos hojas de cálculo separadas con Python?</strong></h2><p>Los analistas de datos a menudo tienen que trabajar con muchas hojas de cálculo, lo que puede volverse agobiante cuando tienes que fusionar esos archivos juntos.</p><p>El código a continuación te ayuda a fusionar dos archivos separados juntos.</p><pre><code class="language-python">import pandas as pd

# Read in the two Excel files

file1 = pd.read_excel('file1.xlsx')file2 = pd.read_excel('file2.xlsx')

# Merge the two files using the concat() method
merged_file = pd.concat([file1, file2], ignore_index=True)

# Write the merged file to a new Excel file
merged_file.to_excel('merged_file.xlsx', index=False)</code></pre><p>En este código, primero importamos la biblioteca Pandas, que utilizaremos para leer y manipular los archivos de Excel.</p><p>Primero usamos el método <code>read_excel()</code> para leer tanto en <code>file1.xlsx</code> como en <code>file2.xlsx</code>. </p><p>Luego, empleamos el método <code>concat()</code> para unir los dos archivos juntos. El argumento<code>ignore_index=True</code> garantiza que los valores de índice de ambos archivos se reinicien, de modo que no terminemos con valores de índice duplicados en el archivo fusionado.</p><p>Finalmente recurrimos al método <code>to_excel()</code> para escribir el archivo fusionado en un nuevo archivo de Excel llamado <code>merged_file.xlsx</code>. También establecemos <code>index=False</code> para asegurarnos de que la columna de índice no se incluya en el archivo de salida.</p><h2 id="c-mo-importar-y-exportar-datos-con-python">Cómo Importar y Exportar Datos con Python</h2><p>Esta tarea implica el uso de bibliotecas de Python como Pandas para leer archivos de Excel en un objeto DataFrame. Luego puedes manipularlo y analizarlo utilizando Python.</p><p>También puedes exportar datos desde Python de vuelta a un archivo de Excel utilizando las mismas bibliotecas.</p><pre><code class="language-python">import pandas as pd
# Import Excel file

df = pd.read_excel('filename.xlsx', sheet_name='Sheet1')

# Export to Excel file
df.to_excel('new_filename.xlsx', index=False)</code></pre><p>El código dado importa la biblioteca Pandas y lee un archivo de Excel llamado "filename.xlsx" desde la Hoja1 del libro de trabajo, almacenando los datos en un marco de datos de Pandas llamado "df". Luego, el marco de datos se exporta a un nuevo archivo de Excel llamado "new_filename.xlsx" utilizando el método "to_excel". El parámetro "index=False" se utiliza para excluir la indexación de filas en el archivo de salida.</p><p>Esencialmente, el código copia el contenido del archivo de Excel original a un nuevo archivo utilizando Pandas.</p><h2 id="c-mo-limpiar-y-transformar-datos-usando-python">Cómo Limpiar y Transformar Datos usando Python</h2><p>Esta tarea implica el uso de bibliotecas de Python como Pandas para limpiar y transformar datos en Excel.</p><p>Esto puede incluir la eliminación de duplicados, filtrado de datos según criterios específicos y realización de cálculos sobre los datos.</p><pre><code class="language-python">import pandas as pd

# Remove duplicates
df = df.drop_duplicates()

# Filter data
df = df[df['column_name'] &gt; 10]

# Perform calculations
df['new_column'] = df['column1'] + df['column2']</code></pre><p>El fragmento de código anterior realiza tareas de limpieza y manipulación de datos en un marco de datos de Pandas llamado 'df' utilizando la biblioteca Pandas.</p><p>En primer lugar, elimina filas duplicadas de 'df' utilizando el método "drop_duplicates". En segundo lugar, filtra el marco de datos 'df' seleccionando las filas donde el valor en la columna 'column_name' es mayor que 10 y asigna el resultado filtrado a un nuevo marco de datos llamado 'data_df'.</p><p>Por último, se añade una nueva columna llamada 'new_column' a 'df' que contiene la suma de los valores de 'column1' y 'column2'.</p><p>En general, el código limpia y manipula eficazmente los datos eliminando duplicados, filtrando filas específicas y añadiendo una nueva columna calculada al marco de datos original.</p><h2 id="c-mo-realizar-an-lisis-de-datos-con-python">Cómo Realizar Análisis de Datos con Python</h2><p>Este proceso implica utilizar bibliotecas de Python como Pandas y NumPy para llevar a cabo análisis de datos en datos de Excel.</p><p>Esto podría abarcar desde calcular estadísticas resumidas, como la media y la desviación estándar, hasta crear informes personalizados mediante la agrupación de datos según criterios específicos.</p><pre><code class="language-python">import pandas as pd
import numpy as np

# Calculate summary statistics
df.describe()
# Create custom reports
df.pivot_table(values='column_name', index='category_name', columns='date')</code></pre><p>El código utiliza las bibliotecas Pandas y NumPy y realiza tareas de análisis de datos e informes en un marco de datos de Pandas llamado "df".</p><p>En primer lugar, calcula estadísticas resumidas para los datos numéricos en el marco de datos utilizando el método "describe". Este método genera información valiosa sobre la distribución, tendencia central y dispersión de los datos.</p><p>En segundo lugar, el código utiliza el método "pivot_table" para crear informes personalizados a partir del marco de datos. Este método resume y agrega los datos en el dataframe y puede producir tablas en varios formatos.</p><p>En este código, genera un nuevo marco de datos donde los valores de 'column_name' están agrupados por las columnas 'category_name' y 'date'.</p><p>En resumen, el código realiza tareas de análisis estadístico e informes en el marco de datos para obtener información de los datos.</p><h2 id="c-mo-crear-gr-ficos-con-python">Cómo Crear Gráficos con Python</h2><p>Esta tarea implica utilizar bibliotecas de Python como matplotlib o seaborn para crear gráficos y diagramas a partir de datos de Excel.</p><p>Puedes personalizar estos gráficos para mostrar datos específicos y darles formato para cumplir con requisitos particulares.</p><pre><code class="language-python">import pandas as pd
import matplotlib.pyplot as plt
# Create a bar chart
df.plot(kind='bar', x='category_name', y='sales')
plt.show()
# Create a scatter plot
df.plot(kind='scatter', x='column1', y='column2')plt.show()</code></pre><p>El código importa dos bibliotecas, Pandas y matplotlib.pyplot, utilizando los alias 'pd' y 'plt', respectivamente.</p><p>Luego, se utiliza el método "plot" de Pandas para crear dos tipos de gráficos. El primer tipo de gráfico es un gráfico de barras que muestra la relación entre las columnas 'category_name' y 'sales' en el dataframe "df".</p><p>El segundo tipo de gráfico es un gráfico de dispersión que muestra la relación entre las columnas 'column1' y 'column2' en el mismo marco de datos. El código utiliza los parámetros "kind='bar'" para el gráfico de barras y "kind='scatter'" para el gráfico de dispersión para crear los respectivos gráficos.</p><p>Por último, se llama al método "show" para mostrar los gráficos en la pantalla. En resumen, el código utiliza Pandas y matplotlib para crear un gráfico de barras y un gráfico de dispersión para visualizar los datos en el marco de datos "df".</p><h2 id="c-mo-realizar-visualizaci-n-de-datos-en-python">Cómo Realizar Visualización de Datos en Python</h2><p>Esta tarea implica utilizar bibliotecas de Python como Plotly y Bokeh para crear visualizaciones de datos interactivas a partir de datos de Excel.</p><p>Estas visualizaciones permiten a los usuarios explorar los datos de nuevas formas, como mediante el zoom en puntos de datos específicos o el filtrado de datos según criterios específicos.</p><pre><code class="language-python">import pandas as pd
import plotly.express as px
# Create a heatmap
fig = px.imshow(df.corr())
fig.show()
# Create a line chart
fig = px.line(df, x='date', y='sales', color='category')
fig.show()</code></pre><p>El código utiliza las bibliotecas Pandas y plotly.express para crear dos tipos de visualizaciones. Primero, se crea un gráfico de mapa de calor utilizando el método "imshow" de plotly.express que visualiza la correlación entre las columnas en el marco de datos "df".</p><p>En segundo lugar, se crea un gráfico de líneas utilizando el método "line" de plotly.express que muestra la relación entre las columnas 'date' y 'sales' mientras diferencia entre las categorías basadas en la columna 'category' del dataframe. Ambos gráficos se muestran utilizando el método "show".</p><h2 id="c-mo-automatizar-la-generaci-n-de-informes-con-python">Cómo Automatizar la Generación de Informes con Python</h2><p>Esta tarea implica utilizar scripts de Python para automatizar el proceso de generación de informes a partir de datos de Excel.</p><p>Puedes configurar estos scripts para que se ejecuten según un horario regular, como diario o semanal. También pueden actualizarse automáticamente a medida que haya nuevos datos disponibles.</p><pre><code class="language-python">import pandas as pd
# Create daily report
df_daily = df[df['date'] == '2022-01-01']
df_daily.to_excel('daily_report.xlsx', index=False)
# Create weekly report
df_weekly = df.groupby('category').sum()
df_weekly.to_excel('weekly_report.xlsx', index=False)</code></pre><p>El código crea un informe diario mediante la creación de un nuevo marco de datos "df_daily" que incluye solo las filas donde la columna 'date' es igual a '2022-01-01'. Esto se logra utilizando la función de indexación booleana de Pandas.</p><p>Posteriormente, se utiliza el método "to_excel" para exportar los datos filtrados a un archivo de Excel llamado "daily_report.xlsx", sin incluir la columna de índice.</p><p>A continuación, el código crea un informe semanal agrupando el marco de datos "df" por la columna 'category' y sumando los valores de todas las demás columnas. Esto se logra utilizando los métodos "groupby" y "sum" de Pandas.</p><p>El resultado se guarda en un nuevo marco de datos llamado "df_weekly". Por último, se utiliza el método "to_excel" para exportar los datos agregados a un archivo de Excel llamado "weekly_report.xlsx", sin incluir la columna de índice.</p><p>En resumen, el código crea dos informes utilizando la biblioteca Pandas. El primer informe es un informe diario que incluye solo datos de una fecha específica, y el segundo informe es un informe semanal que agrupa los datos por categoría. Ambos informes se exportan a archivos de Excel utilizando el método "to_excel".</p><h2 id="c-mo-automatizar-tareas-repetitivas-con-macros-y-scripts-en-python">Cómo Automatizar Tareas Repetitivas con Macros y Scripts en Python</h2><p>Esta tarea implica utilizar Python para automatizar tareas repetitivas en Excel, como la entrada de datos o el formato. </p><p>Puedes hacer esto creando macros o scripts que se ejecuten automáticamente, o utilizando Python para interactuar directamente con la aplicación de Excel.</p><pre><code class="language-python">import win32com.client as win32
# Open Excel file
excel = win32.gencache.EnsureDispatch('Excel.Application')
workbook = excel.Workbooks.Open(r'filename.xlsx')
# Run macro
excel.Application.Run('macro_name')
# Save and close Excel
 fileworkbook.Save()workbook.Close()excel.Quit()</code></pre><p>El código utiliza el módulo win32com.client para interactuar con Microsoft Excel a través de la API de Windows.</p><p>Primero, se abre una instancia de la aplicación Excel utilizando el método <code>EnsureDispatch()</code>, y el archivo de Excel especificado se abre utilizando el método <code>Workbooks.Open()</code>.</p><p>A continuación, se ejecuta una macro utilizando el método <code>Application.Run()</code>, pasando el nombre de la macro como argumento.</p><p>Finalmente, los cambios realizados en el archivo de Excel se guardan utilizando el método <code>Save()</code>, el libro de trabajo se cierra utilizando el método <code>Close()</code>, y la aplicación de Excel se termina utilizando el método <code>Quit()</code>.</p><p><strong>Cómo Extraer Datos con Python</strong></p><p>Esta tarea implica utilizar bibliotecas de Python como requests y Beautiful Soup para extraer datos de páginas web u otras fuentes e importarlos a Excel.</p><p>Luego, puedes analizar y manipular estos datos utilizando bibliotecas de Python como Pandas.</p><pre><code class="language-python">import pandas as pd
import requests
from bs4 import BeautifulSoup
# Scrape data from web page
url = 'https://www.website.com/data'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')
df = pd.read_html(str(table))[0]
# Export to Excel file
df.to_excel('scraped_data.xlsx', index=False)</code></pre><p>Este código utiliza la biblioteca requests para enviar una solicitud GET HTTP a la URL '<a href="https://www.example.com">https://www.example.com</a>'. Luego utiliza la biblioteca BeautifulSoup para analizar el contenido HTML de la respuesta en un objeto BeautifulSoup nombrado 'soup'.</p><p>Puedes luego utilizar métodos de BeautifulSoup como <strong><code>find_all()</code></strong> para extraer datos específicos del HTML:</p><p><code>links = []for link in soup.find_all('a'): &nbsp; &nbsp;href = link.get('href') &nbsp; &nbsp;links.append(href)</code></p><p>Este código encuentra todas las etiquetas de anclaje en el HTML y extrae el valor del atributo 'href' para cada una, agregándolos a una lista nombrada 'links'.</p><h2 id="c-mo-utilizar-python-para-integrar-excel-con-otras-aplicaciones">Cómo Utilizar Python para Integrar Excel con Otras Aplicaciones</h2><p>Esta tarea implica utilizar Python para integrar Excel con otras aplicaciones, como bases de datos o servicios web.</p><p>Puedes hacer esto utilizando bibliotecas de Python como pyodbc para conectarte a bases de datos o mediante el uso de APIs para conectarte a servicios web. Esto permite una transferencia y análisis de datos sin problemas entre diferentes aplicaciones.</p><pre><code class="language-python">import pandas as pd
import pyodbc
# Connect to database
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=db_name;UID=user_id;PWD=password')
# Read data from database
query = 'SELECT * FROM table_name'
df = pd.read_sql(query, cnxn)
# Export to Excel file
df.to_excel('database_data.xlsx', index=False)</code></pre><p>El código establece una conexión a una base de datos SQL Server utilizando el método <code>pyodbc.connect()</code>, donde el controlador, el nombre del servidor, el nombre de la base de datos, el ID de usuario y la contraseña se proporcionan como argumentos.</p><p>Luego, se define y ejecuta una consulta SQL para recuperar datos de una tabla en la base de datos utilizando el método <code>pd.read_sql()</code>, donde la consulta SQL y el objeto de conexión se proporcionan como argumentos. Los datos recuperados se almacenan en un marco de datos de pandas.</p><p>Finalmente, los datos en el Marco de Datos se exportan a un archivo de Excel llamado "database_data.xlsx" utilizando el método <code>to_excel()</code>, excluyendo la columna de índice de la exportación al establecer el parámetro <code>index</code> en <code>False</code>.</p><h2 id="conclusi-n">Conclusión</h2><p>Python es un lenguaje versátil que puedes utilizar para automatizar muchas tareas de Excel. También puedes utilizar diversas bibliotecas como Pandas, openpyxl, xlwings y pyautogui para manipular datos, extraer información, generar informes y automatizar tareas repetitivas.</p><p>La automatización puede ahorrar tiempo y esfuerzo, reducir errores y aumentar la productividad. La competencia en Python puede ser una habilidad valiosa para cualquier profesional que trabaje con Excel, ya sea un analista de datos o financiero. Al aprender Python, puedes llevar tu trabajo a nuevos niveles.</p><p>¡Conéctate en <a href="https://twitter.com/Olujerry19">Twitter </a>y <a href="https://www.linkedin.com/in/jeremiah-oluseye-58457719a/">LinkedIn</a>. ¡Gracias por leer!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Verificar versión de Python - Cómo hacerlo en Mac, Windows y Linux ]]>
                </title>
                <description>
                    <![CDATA[ Python es un lenguaje versátil y ampliamente conocido por su simplicidad y legibilidad. Debido a su naturaleza de constante evolución, nuevas versiones de este lenguaje están siendo desarrolladas y entregadas frecuentemente, cada una ofreciendo nuevas funcionalidades, mejoras y arreglos de bugs. Como desarrollador de Python, es crucial estar al tanto ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/check-python-version-how-to-check-py-in-mac-windows-and-linux/</link>
                <guid isPermaLink="false">65d76ef1400c3a03efdc97d8</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jamer José ]]>
                </dc:creator>
                <pubDate>Tue, 19 Mar 2024 07:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/Shittu-Olumide-Check-Python-Version---How-to-Check-Py-in-Mac--Windows--and-Linux.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/check-python-version-how-to-check-py-in-mac-windows-and-linux/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Check Python Version – How to Check Py in Mac, Windows, and Linux</a>
      </p><p>Python es un lenguaje versátil y ampliamente conocido por su simplicidad y legibilidad.</p><p>Debido a su naturaleza de constante evolución, nuevas versiones de este lenguaje están siendo desarrolladas y entregadas frecuentemente, cada una ofreciendo nuevas funcionalidades, mejoras y arreglos de bugs.</p><p>Como desarrollador de Python, es crucial estar al tanto de la versión que estás usando, ya que ésta determina la compatibilidad de las librerías, la sintaxis a usar y las funcionalidades disponibles.</p><p>En este artículo, estaremos explorando algunos métodos para revisar qué versión de Python está instalada en nuestro sistema. Sea que estés empezando tu camino en Python, o ya seas un desarrollador con experiencia trabajando en un proyecto, conocer tu versión de Python es el primer paso para asegurarnos una ejecución segura y la compatibilidad de nuestro programa.</p><p>A continuación estaremos revisando diferentes opciones de la línea de comandos para determinar la versión de Python. Para el final de este artículo, tendrás el conocimiento necesario para que sin ningún esfuerzo verifiques tu versión de Python de manera que puedas tomar decisiones conscientes sobre las herramientas y librerías que puedes utilizar de acuerdo al resultado.</p><h2 id="c-mo-verificar-la-versi-n-de-python-en-mac"><strong>Cómo verificar la Versión de Python en Mac</strong></h2><p>Para verificar la versión de Python en Mac, debes seguir estos pasos:</p><h3 id="abre-la-aplicaci-n-de-terminal"><strong>Abre la aplicación de Terminal</strong></h3><p>Puedes encontrar la terminal en Mac navegando a "<strong>Aplicaciones</strong>" &nbsp;→ "<strong>Utilidades</strong>" → "<strong>Terminal</strong>", o también puedes utilizar la funcionalidad de búsqueda (Cmd + Espacio) y escribir "<strong>Terminal"</strong>.</p><p>Una vez tenemos la terminal abierta, nuestra interfaz está lista para recibir comandos. Con lo que podemos ejecutar el siguiente:</p><pre><code class="language-bash">python --version
</code></pre><p>Este comando mostrará la versión de Python que tenemos instalada en nuestro sistema Mac. Por ejemplo, en caso de tener la versión 3.9.2 de Python instalada, veríamos una salida como la siguiente:</p><pre><code class="language-bash">Python 3.9.2
</code></pre><p>El número de la versión dependerá de la forma en la que hayas instalado Python en tu sistema.</p><h3 id="m-todos-alternativos-para-mac"><strong>Métodos alternativos para Mac</strong></h3><p>Si el comando anterior no te ha funcionado, intenta usar el comando <code>python3 --version</code> . Python 3 es la última versión mayor de Python, sin embargo la versión 2 fue ampliamente usada para desarrollos antes de la salida de esta última, por lo que es común que algunos sistemas vengan con ambas versiones instaladas, así que para distinguir estas versiones se suele reservar el comando <code>python3</code> para la última versión.</p><p>Para verificar la versión específica de Python 3 instalada podemos usar el siguiente comando</p><pre><code class="language-bash">python3 --version
</code></pre><p>Verás una salida similar a la anterior.</p><p>Otra manera de revisar nuestra versión de Python es mediante el uso del módulo <code>sys</code> dentro del intérprete de Python. Para empezar ejecuta el siguiente comando en tu terminal:</p><pre><code class="language-bash">python
</code></pre><p>Esto lanzará el modo intérprete de Python, te darás cuenta por el prompt que te indica que puedes ejecutar comandos del lenguaje (<code>&gt;&gt;&gt;</code>).</p><p>Dentro del intérprete, ejecuta los siguientes comandos para revisar la versión y presiona Enter:</p><pre><code class="language-bash">import sys
print(sys.version)
</code></pre><p>Esto te mostrará la información sobre la versión de Python y detalles adicionales como el número de la <code>build</code> y la fecha de instalación.</p><p>Luego de revisar la versión de Python, puedes salir del intérprete ejecutando el comando <code>exit()</code>, o también presionando <code>Ctrl</code> + <code>Z</code> seguido de <code>Enter</code>.</p><h2 id="c-mo-revisar-la-versi-n-de-python-en-windows"><strong>Cómo revisar la versión de Python en Windows</strong></h2><p>Para verificar la versión de <code>Python</code> en Windows, puedes seguir estos pasos detalladamente.</p><h3 id="abre-la-terminal-de-comandos-cmd-"><strong>Abre la Terminal de Comandos (CMD):</strong></h3><ul><li>Presiona la tecla Windows</li><li>Escribe "<strong>cmd</strong>" (sin comillas) en la barra de búsqueda.</li><li>Abre el programa "<strong>Consola de Comandos</strong>" desde los resultados de búsqueda. Esto abrirá la ventana de Consola.</li></ul><h3 id="verifica-que-python-est-instalado-"><strong>Verifica que Python está instalado:</strong></h3><p>En la ventana de Comandos, ejecuta el siguiente comando y presiona <code>Enter</code>:</p><pre><code class="language-bash">python --version
</code></pre><p>Si Python está instalado en el sistema, te mostrará una salida como esta: "<strong><strong>Python 3.9.2</strong></strong>".</p><p>Si Python no está instalado, verás un mensaje de error que te avisa que el comando no se reconoce en el sistema. En este caso, primero debes instalarlo antes de proceder.</p><h3 id="revisa-la-ubicaci-n-de-la-instalaci-n-de-python-opcional-"><strong>Revisa la ubicación de la instalación de Python (opcional):</strong></h3><p>Otra forma de verificar la versión de Python es revisando la ubicación del ejecutable. En la ventana de Comandos, escribe el siguiente comando y presiona <code>Enter</code>:</p><pre><code class="language-bash">where python
</code></pre><p>Este comando te indicará dónde se encuentra el ejecutable de Python en tu sistema. Por defecto, Python es instalado en un directorio como el siguiente "<strong><strong>C:\PythonXX</strong></strong>", donde "<strong><strong>XX</strong></strong>" representa la versión.</p><p>Si el comando no arroja ningún resultado, significa que Python no está instalado en el sistema o no ha sido agregado a el <code>PATH</code> en las variables de entorno.</p><h3 id="revisa-la-versi-n-de-python-usando-el-modo-int-rprete-"><strong>Revisa la versión de Python usando el modo intérprete:</strong></h3><p>En la terminal, escribe el siguiente comando y presiona <code>Enter</code>:</p><pre><code class="language-bash">python
</code></pre><p>Esto abrirá el intérprete de Python, junto con información sobre la versión en las primeras líneas. Por ejemplo, "<strong><strong>Python 3.9.2 (tags/v3.9.2:1a79785, Feb 22 2021, 12:26:58)</strong></strong>".</p><p>Para salir del modo intérprete, escribe <code>exit()</code> y presiona <code>Enter</code>.</p><h4 id="revisar-la-versi-n-de-python-usando-el-idle-"><strong>Revisar la versión de Python usando el IDLE:</strong></h4><p>IDLE es un entorno de desarrollo integrado que viene junto con Python.</p><p>En la terminal, ejecuta el siguiente comando:</p><pre><code class="language-bash">idle
</code></pre><p>Esto lanzará el modo IDLE de Python, el cuál mostrará en las primeras líneas información sobre la versión de Python que se está utilizando. Por ejemplo, "<strong><strong>Python 3.9.2 (tags/v3.9.2:1a79785, Feb 22 2021, 12:26:58)</strong></strong>".</p><p>Para salir del modo IDLE, dirígete a la sección "<strong>Archivo</strong>" en el menú y elige la opción "<strong>Salir</strong>" o simplemente cierra la ventana.</p><p>Siguiendo estos pasos, puedes verificar fácilmente la versión de Python instalada en tú sistema Windows.</p><h2 id="c-mo-verificar-la-versi-n-de-python-en-linux"><strong>Cómo verificar la versión de Python en Linux</strong></h2><h3 id="abre-una-terminal-"><strong>Abre una terminal:</strong></h3><p>Comienza por ejecutar una nueva instancia de la aplicación de terminal en tu sistema Linux. Normalmente la puedes encontrar en la sección de aplicaciones o usando un atajo de comando como <code>Ctrl</code> + <code>Alt</code> + <code>T</code>.</p><p>Una vez en la terminal, ejecuta el siguiente comando:</p><pre><code class="language-bash">python --version
</code></pre><p>Esto te mostrará la versión de Python instalada en tu sistema.</p><blockquote><em><em><strong><strong>Not</strong></strong></em><strong>a</strong><em>: </em>Algunas distros de Linux, como Ubuntu, pueden tener las versiones 2 y 3 instaladas a la vez. En ese caso, el comando anterior sirve para verificar la versión de Python 2 instalada. Para revisar la versión 3 de Python puedes ejecutar el siguiente comando:</em></blockquote><pre><code class="language-bash">python3 --version
</code></pre><h3 id="revisa-la-salida-"><strong>Revisa la salida:</strong></h3><p>Después de ejecutar el comando, la terminal te mostrará la versión de Python instalada en tú sistema. Normalmente se presenta en el formato "Python x.y.z", donde <code>x</code>, <code>y</code>, y <code>z</code> representan la versión mayor, menor y micro respectivamente.</p><p>Ejemplo de salida:</p><pre><code class="language-bash">Python  3.9.2
</code></pre><h3 id="verifica-la-instalaci-n-"><strong>Verifica la instalación:</strong></h3><p>Puedes verificar que la versión arrojada por el comando anterior es correcta entrando a la consola interactiva de Python en tu terminal. Para hacerlo ejecuta el siguiente comando:</p><pre><code class="language-bash">python
</code></pre><p>Esto abrirá la consola de Python, donde puedes ejecutar comandos interactivamente.</p><h3 id="revisa-la-versi-n-instalada-desde-la-consola-de-python-"><strong>Revisa la versión instalada desde la consola de Python:</strong></h3><p>En la consola de Python, puedes confirmar la versión ejecutando estos comandos:</p><pre><code class="language-python">import sys
print(sys.version)
</code></pre><p>La salida te dará detalles específicos de la versión instalada de Python, incluyendo el número, información sobre la build y detalles adicionales.</p><h3 id="salir-de-la-terminal-de-python"><strong>Salir de la terminal de Python</strong></h3><p>Para salir de la consola de Python puedes ejecutar el método <code>exit()</code> o presionar <code>Ctrl</code>+<code>D</code>.</p><p>Siguiendo estos pasos podrás consultar de manera fácil la versión de Python instalada en tu sistema Linux.</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Siguiendo las instrucciones provistas aquí puedes verificar fácilmente la versión de Python que está utilizando tu máquina ya sea Mac, Windows o Linux. Esto te ayudará a escribir tus programas en Python con una mayor confianza.</p><p>Siempre recuerda consultar documentación relevante y/o recursos de la comunidad si encuentras algún problema siguiendo estos pasos o si estás usando versiones no estándares de Python o entornos virtuales.</p><p>Ya que Python sigue evolucionando, estar actualizado con las últimas versiones es un paso importante en tus desarrollos. Este conocimiento te permite aprovechar las nuevas funcionalidades y mejoras introducidas en nuevas versiones mientras que mantienes una compatibilidad en tus desarrollos.</p><p>¡Conecta conmigo en <a href="https://www.twitter.com/Shittu_Olumide_">Twitter</a> y en <a href="https://www.linkedin.com/in/olumide-shittu">LinkedIn</a>!. También puedes suscribirte a mi canal de <a href="https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A">YouTube</a>.</p><p>Happy Coding!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Añadiendo a dict() en Python: Cómo añadir a un diccionario ]]>
                </title>
                <description>
                    <![CDATA[ Un diccionario en Python es un grupo de elementos desordenados, cada uno de los cuales tiene un conjunto único de claves y valores. Se puede usar como clave cualquier tipo de dato inmutable, como una cadena, un número o una tupla. Sirve como identificador único de valor en el diccionario. ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/anadiendo-a-dict-en-python-como-anadir-a-un-diccionario/</link>
                <guid isPermaLink="false">65bd5e45aa1f2203f0eb07d9</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Cristian Fernando Villca Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 11 Mar 2024 15:19:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/Shittu-Olumide-Adding-to-Dict-in-Python---How-to-Append-to-a-Dictionary-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/add-to-dict-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Adding to Dict in Python – How to Append to a Dictionary</a>
      </p><h3 id="un-diccionario-en-python-es-un-grupo-de-elementos-desordenados-cada-uno-de-los-cuales-tiene-un-conjunto-nico-de-claves-y-valores-">Un diccionario en Python es un grupo de elementos desordenados, cada uno de los cuales tiene un conjunto único de claves y valores.</h3><p>Se puede usar como clave cualquier tipo de dato inmutable, como una cadena, un número o una tupla. Sirve como identificador único de valor en el diccionario. El valor es repetible y aplicable a todo tipo de datos.</p><p>En Python, los diccionarios se indican con llaves <strong><code>{ }</code></strong>, y cada par clave-valor está delimitado por dos puntos <strong><code>:</code></strong>. Una coma separa cada par clave-valor. A continuación se muestra un ejemplo de un diccionario básico:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">mi_diccionario = {"piña": 12, "manzana": 30, "naranja": 5, "palta":7}
</code></pre><figcaption>Ejemplo de diccionario básico en Python</figcaption></figure><p>En este ejemplo, "piña", "manzana", "naranja" y "palta" son las claves y 12, 30, 5 y 7 son los valores correspondientes.</p><p>Veremos como podemos agregar un único par clave-valor a un diccionario usando el método <code><strong>update()</strong></code>, y finalmente aprenderemos a usar el constructor <code><strong>dict()</strong></code>.</p><h2 id="-c-mo-agregar-un-nico-par-clave-valor-a-un-diccionario">¿Cómo agregar un único par clave-valor a un diccionario?</h2><p>Para agregar un único par clave-valor a un diccionario en Python, podemos usar el siguiente código como ejemplo:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">my_diccionario = {'a': 1, 'b': 2}
my_diccionario['c'] = 3</code></pre><figcaption>Agregar un nuevo par clave-valor a un diccionario Python</figcaption></figure><p>El código anterior creará un diccionario <code>my_diccionario</code> con dos pares clave-valor. Luego agregamos un nuevo par clave-valor <code>c:3</code> al diccionario simplemente asignando el valor <code>3</code> a la clave <code>c</code>. Después de ejecutar el código, el diccionario <code>my_diccionario</code> ahora contendrá el par clave-valor <code>c:3</code>.</p><p>Podemos verificar esto imprimiendo el diccionario:</p><figure class="kg-card kg-code-card"><pre><code>print(my_diccionario)</code></pre><figcaption>Imprimimos el diccionario</figcaption></figure><p>Obtenemos como salida:</p><figure class="kg-card kg-code-card"><pre><code>{'a': 1, 'b': 2, 'c': 3}</code></pre><figcaption>Verificamos que el nuevo par clave-valor efectivamente se agrego al diccionario</figcaption></figure><p>Si ya existe una clave <code>c</code> en el diccionario, el valor se actualizará a <code>3</code>.</p><h2 id="-c-mo-agregar-m-ltiples-pares-clave-valor-con-el-m-todo-update-">¿Cómo agregar múltiples pares clave-valor con el método <code>update()</code>?</h2><p>Se pueden agregar de manera simultánea varios pares clave-valor a un diccionario usando método <code>update()</code>. Este método inserta nuevas entradas en el diccionario original desde otro diccionario o un iterable de pares clave-valor como entrada. El valor de una clave existente en el diccionario original se actualizará con el nuevo valor.</p><p>Ahora veamos un ejemplo usando el método <code>update()</code> para agregar múltiples entradas a un diccionario:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">my_diccionario = {'a': 1, 'b': 2}
nuevos_datos = {'c': 3, 'd': 4}

my_diccionario.update(nuevos_datos)

print(my_diccionario)</code></pre><figcaption>Agregamos múltiples pares clave-valor a un diccionario usando el método <code>update()</code></figcaption></figure><p>Salida:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">{'a': 1, 'b': 2, 'c': 3, 'd': 4}</code></pre><figcaption>Verificamos que todos los pares clave-valor se agregaron</figcaption></figure><p>Otra cosa divertida de este método es que podemos usar<code>update()</code> con un iterable de pares clave-valor, como una lista de tuplas. Veamos esto en acción:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">my_diccionario = {'a': 1, 'b': 2}
nuevos_datos = [('c', 3), ('d', 4)]

my_diccionario.update(nuevos_datos)

print(my_diccionario)</code></pre><figcaption>Agregamos multiples pares clave-valor como tupla a un diccionario usando el método <code>update()</code></figcaption></figure><p>La salida será la misma obtenida en el ejemplo anterior:</p><figure class="kg-card kg-code-card"><pre><code class="language-python">{'a': 1, 'b': 2, 'c': 3, 'd': 4}</code></pre><figcaption>Verificamos nuevamente la salida</figcaption></figure><h2 id="-c-mo-actualizar-un-diccionario-usando-el-constructor-dict-">¿Cómo actualizar un diccionario usando el constructor <code>dict()</code>?</h2><p>En Python, un diccionario se puede actualizar o crear desde cero utilizando el constructor <code>dict()</code>. Al pasar un diccionario que contiene el nuevo par clave-valor como argumento al constructor <code>dict()</code>, podemos agregar un único par clave-valor a un diccionario existente.</p><p>Ejemplo:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">my_diccionario = {'a': 1, 'b': 2, 'c': 3}
nuevo_diccionario = dict(my_diccionario, d=4)

print(nuevo_diccionario)</code></pre><figcaption>Agregamos un nuevo par clave-valor usando <code>dict()</code></figcaption></figure><p>Salida:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">{'a': 1, 'b': 2, 'c': 3, 'd': 4}	</code></pre><figcaption>Verificamos la salida</figcaption></figure><p>En este ejemplo, contamos con el diccionario <code>my_diccionario</code> con 3 pares clave-valor. Luego creamos un nuevo diccionario llamado <code>nuevo_diccionario</code> usando el constructor <code>dict()</code> y agregamos el par clave-valor <code>d:4</code>.</p><p>Tenga en cuenta que también se puede crear un nuevo diccionario utilizando el constructor <code>dict()</code> a partir de una lista de pares clave-valor, donde cada par está representado por una tupla.</p><figure class="kg-card kg-code-card"><pre><code class="language-py">mi_lista = [('a', 1), ('b', 2), ('c', 3)]
mi_diccionario = dict(mi_lista)

print(mi_diccionario)</code></pre><figcaption>Convertimos una lista de tuplas a un diccionario usando <code>dict()</code></figcaption></figure><p>Salida:</p><figure class="kg-card kg-code-card"><pre><code class="language-py">{'a': 1, 'b': 2, 'c': 3}</code></pre><figcaption>Verificamos la salida</figcaption></figure><h1 id="conclusi-n">Conclusión</h1><p>En Python los diccionarios se usan con frecuencia para almacenar datos y proporcionar acceso rápido a ellos mediante una clave única. Resultan útiles cuando se trabajan con listas o tuplas donde necesitamos acceder a datos utilizando un identificador único en lugar de una secuencia.</p><p>Conecta conmigo en <a href="https://twitter.com/Shittu_Olumide_">Twitter</a> y/o <a href="https://www.linkedin.com/in/olumide-shittu">Linkedln</a>. Puedes suscribirte también a mi canal en <a href="https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A">YouTube</a>.</p><p>¡Feliz codificación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Dataframe a CSV: Cómo guardar Pandas Dataframes exportando ]]>
                </title>
                <description>
                    <![CDATA[ Pandas es una biblioteca de código abierto ampliamente usando en Python para la manipulación y el análisis de datos. Proporciona una variedad estructuras de datos y funciones para trabajar con datos, una de las cuales es DataFrame. Los DataFrames son una herramienta poderosa para almacenar y analizar grandes cantidades de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/dataframe-a-csv-como-guardar-pandas-dataframes-exportando/</link>
                <guid isPermaLink="false">65bee2e1aa1f2203f0eb08e3</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Cristian Fernando Villca Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 05 Feb 2024 02:47:28 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/Shittu-Olumide-Dataframe-to-CSV---How-to-Save-Pandas-Dataframes-by-Exporting.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/dataframe-to-csv-how-to-save-pandas-dataframes-by-exporting/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Dataframe to CSV – How to Save Pandas Dataframes by Exporting</a>
      </p><p>Pandas es una biblioteca de código abierto ampliamente usando en Python para la manipulación y el análisis de datos. Proporciona una variedad estructuras de datos y funciones para trabajar con datos, una de las cuales es DataFrame.</p><p>Los DataFrames son una herramienta poderosa para almacenar y analizar grandes cantidades de datos, pero puede resultar complicado trabajar con ellos si no se guardan o se exportan correctamente.</p><p>Es una práctica común en el análisis de datos exportar datos de Pandas, DataFrames a archivos CSV porque puede ayudar a ahorrar tiempo y recursos. Debido a su portabilidad y capacidad de ser leídos fácilmente por números aplicaciones, los archivos CSV son un formato de archivo común para almacenar y distribuir datos tabulares.</p><p>Independientemente, si eres analista de datos novato o experto, este artículo lo guiará a través del proceso de guardar DataFrames de Pandas en archivos CSV y le brindará consejos útiles sobre como hacerlo. </p><h2 id="-como-guardar-dataframes-de-pandas-usando-el-m-todo-to_csv-">¿Como guardar DataFrames de Pandas usando el método <code>.to_csv()</code>?</h2><p>El método <code>.to_csv()</code> es una función incorporada en Pandas que le permite guardar un DataFrame de Pandas como un archivo CSV. Esté método exporta el DataFrame a un archivo de valores separados por comas (CSV), que es un formato simple y ampliamente usando para almacenar datos tabulares.</p><p>La sintaxis para usar el método <code>.to_csv()</code> es la siguiente:</p><pre><code class="language-py">DataFrame.to_csv(nombre_archivo, sep=',', index=False, encoding='utf-8')</code></pre><p>Aquí, <code>DataFrame</code> se refiere al DataFrame de Pandas que queremos exportar y <code>nombre_archivo</code> se refiere al nombre de archivo en el que se desea guardar sus datos.</p><p>El parámetro <code>sep</code> especifica el separador que debe usar para separar valores en el archivo CSV. De forma predeterminada es configurado en <code>,</code> para valores separados por comas. También podemos configurarlo con un separador diferente como <code>/t</code> para valores separados por tabulaciones.</p><p>El parámetro <code>index</code> es un valor booleano que determina si se incluye el índice del DataFrame en el archivo CSV. De forma predeterminada está configurado en <code>False</code>, lo que significa que el índice no está incluido.</p><p>El parámetro <code>encoding</code> especifica la codificación de caracteres que se utilizara para el archivo CSV. De forma predeterminada está configurado en <code>utf-8</code>, que es una codificación estándar para archivos de texto.</p><h2 id="ejemplo-de-c-digo">Ejemplo de código</h2><pre><code class="language-py">import pandas as pd

# Creamos un simple DataFrame
Biodatos = {'Nombre': ['John', 'Emily', 'Mike', 'Lisa'],
        'Edad': [28, 23, 35, 31],
        'Genero': ['M', 'F', 'M', 'F']
        }
df = pd.DataFrame(Biodatos)

# Guardarmos el DataFrame en un archivo CSV
df.to_csv('Biodatos.csv', index=False)</code></pre><h2 id="explicaci-n">Explicación</h2><p>Analicemos que hace cada parte del código:</p><ul><li><code>import pandas as pd</code>: Esto importa la biblioteca Pandas y le asigna el alias <code>pd</code>, que es una convención de uso común.</li><li><code>Biodatos = {'Name': ['John', 'Emily', 'Mike', 'Lisa'], 'Age': [28, 23, 35, 31], 'Gender': ['M', 'F', 'M', 'F']}</code>: Esto crea un diccionario en Python con los datos que queremos almacenar en el DataFrame. Cada clave representa una columna en el DataFrame y su valor correspondiente es una lista de valores para esa columna.</li><li><code>df = pd.DataFrame(Biodatos)</code>: Esto crea DataFrame en Pandas a partir del diccionario <code>Biodatos</code>.</li><li><code>df.to_csv('Biodata.csv', index=False)</code>: esto guarda el DataFrame en un archivo CSV llamado <code>Biodatos.csv</code>.</li></ul><h2 id="otras-maneras-de-guardar-dataframes-de-pandas">Otras maneras de guardar DataFrames de Pandas</h2><p>Existen varios métodos alternativos a <code>.to_csv()</code> para guardar DataFrames de Pandas en varios formatos de archivos que incluyen:</p><ol><li><code>to_excel()</code>: Este método se usa para guardar DataFrames a un archivo Excel.</li><li><code>to_json()</code>: Este método se usa para guardar DataFrames a un archivo JSON.</li><li><code>to_hdf()</code>: Este método se utiliza para guardar un DataFrame como un archivo HDF5, que es un formato de datos jerárquico comúnmente utilizado en informática científica.</li><li><code>to_sql()</code>: Este método se usa para guardar DataFrames a un archivo SQL.</li><li><code>to_pickle()</code>: Este método se utiliza para guardar un DataFrame como un objeto seleccionado, que es una representación serializada del DataFrame.</li></ol><p>Estos métodos alternativos brindan flexibilidad para elegir el formato de archivo que mejor se adapte a su caso de uso y pueden ser particularmente útiles para el análisis e intercambio de datos avanzados.</p><h1 id="conclusi-n">Conclusión</h1><p>¡Gracias por leer! Espero que ahora entiendas cómo puedes convertir fácilmente tus DataFrames de Pandas exportándolos a un archivo CSV usando el método incorporado <code>to_csv()</code>.</p><p>Conecta conmigo en <a href="https://twitter.com/Shittu_Olumide_">Twitter</a> o <a href="https://www.linkedin.com/in/olumide-shittu">Linkdln</a>. Puedes suscribirte a mi canal en <a href="https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A">YouTube</a>.</p><p>¡Feliz codificación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Variables globales en Python ]]>
                </title>
                <description>
                    <![CDATA[ En Python y en la mayoría de los lenguajes de programación, las variables declaradas fuera de una función se conocen como variables globales. Se puede acceder a estas variables tanto dentro como fuera de una función, ya que tienen un alcance global. Un ejemplo de una variable global: x = ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/variables-globales-en-python/</link>
                <guid isPermaLink="false">653b088ce76d6303de0db36d</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anna Aimeri ]]>
                </dc:creator>
                <pubDate>Mon, 30 Oct 2023 19:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/10/kevin-ku-w7ZyuGYNpRQ-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/global-variable-in-python-non-local-python-variables/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Global Variable in Python – Non-Local Python Variables</a>
      </p><p>En Python y en la mayoría de los lenguajes de programación, las variables declaradas fuera de una función se conocen como variables globales. Se puede acceder a estas variables tanto dentro como fuera de una función, ya que tienen un alcance global.</p><p>Un ejemplo de una variable global:</p><pre><code class="language-python">x = 10 

def mostrarX():
    print("El valor de x es", x)
    
mostrarX()
# El valor de x es 10</code></pre><p>La variable <code>x</code> en el código anterior se declaró fuera de una función: <code>x = 10</code>. Utilizando la función <code>mostrarX()</code>, aún pudimos acceder a <code>x</code> porque se declaró en un alcance global.</p><p>Veamos otro ejemplo que muestra lo que pasa cuando declaramos una variable dentro de una función y tratamos de acceder a ella en otro lugar.</p><pre><code class="language-python">def X():
    x = 10 

X()

def mostrarX():
    print("El valor de x es", x)
    
mostrarX()
NameError: name 'x' is not defined</code></pre><p>En el ejemplo anterior, declaramos <code>x</code> dentro de una función e intentamos acceder a ella en otra función. Esto resultó en un <code>NameError</code> porque <code>x</code> no se definió globalmente.</p><p>Las variables definidas dentro de las funciones se llaman variables locales. Su valor sólo se puede utilizar dentro de la función en la que se declaran.</p><p>Se puede cambiar el alcance de una variable local utilizando la palabra clave 	<code>global</code>, lo cual discutiremos en la próxima sección.</p><h2 id="-para-qu-se-usa-la-palabra-clave-global-en-python"><strong>¿Para qué se usa la palabra clave <code>global</code> en Python?</strong></h2><p>La palabra clave <code>global</code> se utiliza principalmente por dos razones:</p><ol><li>Para modificar el valor de una variable global.</li><li>Para hacer que una variable local sea accesible fuera del alcance local.</li></ol><p>Echemos un vistazo a algunos ejemplos de cada uno de estos escenarios para que puedas comprenderlo mejor.</p><h3 id="ejemplo-1-modificando-una-variable-global-usando-la-palabra-clave-global"><strong>Ejemplo #1 - Modificando una variable global usando la palabra clave <code>global</code> </strong></h3><p>En la última sección en la que declaramos una variable global, no intentamos cambiar el valor de la variable. Todo lo que hicimos fue acceder y mostrar su valor en una función.</p><p>Intentemos cambiar el valor de una variable global y veamos qué pasa:</p><pre><code class="language-python">x = 10 

def mostrarX():
    x = x + 2
    print("El valor de x es", x)
    
mostrarX()
# local variable 'x' referenced before assignment</code></pre><p>Como se puede ver arriba, cuando intentamos sumar 2 al valor de <code>x</code>, obtuvimos un error. Esto se debe a que solo podemos acceder pero no modificar <code>x</code>.</p><p>Para solucionar eso, utilizamos la variable global de esta forma:</p><pre><code class="language-python">x = 10 

def mostrarX():
    global x
    x = x + 2
    print("El valor de x es", x)
    
showX()
# El valor de x es 12</code></pre><p>Al usar la palabra clave <code>global</code>, pudimos modificar el valor de <code>x</code> y sumarle 2.</p><h3 id="ejemplo-2-c-mo-hacer-que-una-variable-local-sea-accesible-fuera-de-su-alcance-local-usando-la-palabra-clave-global"><strong>Ejemplo #2 - Cómo hacer que una variable local sea accesible fuera de su alcance local usando la palabra clave <code>global</code></strong></h3><p>Cuando creamos una variable dentro de una función, no fue posible utilizar su valor en otra función porque el compilador no reconoció la variable.</p><p>Así es cómo podemos solucionarlo utilizando la palabra clave <code>global</code>:</p><pre><code class="language-python">def X():
    global x
    x = 10 
    
X()
    
def mostrarX():
    print("El valor de x es ", x)
    
mostrarX()
# El valor de x es 10</code></pre><p>Para hacer posible que <code>x</code> sea accesible fuera de su alcance local, lo declaramos utilizando la palabra clave <code>global</code>: <code>global x</code>. Después, le asignamos un valor a <code>x</code>. Luego, llamamos a la función que utilizamos para declararla: <code>X()</code>.</p><p>Cuando llamamos a la función <code>mostrarX()</code>, que imprime el valor de <code>x</code> declarado en la función <code>X()</code>, no obtuvimos un error porque <code>x</code> tiene un alcance global.</p><h2 id="resumen"><strong>Resumen</strong></h2><p>En este artículo, hablamos de las variables globales y locales en Python. </p><p>Los ejemplos mostraron cómo declarar tanto variables globales como locales.</p><p> También discutimos la palabra clave <code>global</code>, que te permite modificar el valor de una variable global o hacer que una variable local sea accesible fuera de su alcance.</p><p> ¡Feliz programación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo descargar y recortar archivos MP3s de YouTube con Python ]]>
                </title>
                <description>
                    <![CDATA[ Todos somos diferentes, pero creo que casi todos disfrutamos de escuchar música.  Si deseas mantener una versión local de los archivos de audio que escuchas con frecuencia, vas a necesitar descargarlos. A veces, también querrás recortar una parte de este archivo de audio en lugar de tener solo la ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/descargar-y-recortar-mp3s-con-python/</link>
                <guid isPermaLink="false">65275105be1eb103de682d32</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anna Aimeri ]]>
                </dc:creator>
                <pubDate>Mon, 16 Oct 2023 16:19:38 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/10/pexels-pixabay-164821.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/download-trim-mp3-from-youtube-with-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Download and Trim MP3s from YouTube with Python</a>
      </p><p>Todos somos diferentes, pero creo que casi todos disfrutamos de escuchar música.</p><p> Si deseas mantener una versión local de los archivos de audio que escuchas con frecuencia, vas a necesitar descargarlos. A veces, también querrás recortar una parte de este archivo de audio en lugar de tener solo la versión completa disponible. </p><p>Puedes desarrollar un script en Python para hacer exactamente estas cosas. También puedes ampliarlo con funcionalidades adicionales si lo deseas. Y te mostraré cómo hacerlo en este tutorial.</p><h2 id="una-nota-sobre-los-derechos-de-autor"><strong>Una nota sobre los derechos de autor</strong></h2><p>Si has utilizado Internet antes, es probable que seas consciente de que los problemas de derechos de autor pueden provocar mucha controversia, tanto en aquellos que defienden la gratuidad del contenido como en los que no. </p><p><a href="https://www.xataka.com/servicios/github-cierra-repositorio-youtube-dl-software-utilizado-multitud-apps-paginas-descarga-videos">La propia biblioteca que utilizaremos ha tenido sus propios problemas de derechos de autor. </a></p><p>Afortunadamente, tenemos material libre de derechos de autor disponible para que lo disfrutemos y utilicemos en nuestros programas. En este tutorial, usaremos el <a href="https://www.youtube.com/watch?v=8OAPLk20epo">cuarto movimiento de la Novena Sinfonía de Beethoven</a>, que es libre de <em>copyright</em>. Esta guía asume que usarás los siguientes métodos para descargar material libre de derechos de autor. ¡No uses esta información para infringir ningún derecho de autor!</p><h2 id="lo-que-vamos-a-hacer-en-este-tutorial"><strong>Lo que vamos a hacer en este tutorial</strong></h2><p>Primero, vamos a instalar la dependencia básica, FFMPEG. Luego, instalaremos la biblioteca <code>youtube-dl</code> (que también funciona con Vimeo y muchas otras plataformas) para descargar audio desde una URL de YouTube y utilizarlo en el código de Python. </p><p>A continuación, vamos a descargar la librería <code>pydub</code> para recortar archivos de audio e implementaremos esta funcionalidad en nuestro código. </p><p>Por último, vamos a crear una interfaz de usuario amigable para que podamos reutilizar este script más adelante sin necesidad de editar el código. </p><p>Todo esto se va a ejecutar dentro de una función principal <code>main()</code> para que podamos separar la funcionalidad, la implementación y el uso.</p><h2 id="c-mo-instalar-el-paquete-ffmpeg"><strong>Cómo instalar el paquete FFMPEG</strong></h2><p>Este paquete es fundamental en muchos programas multimedia (y en todos los de código abierto que he usado hasta ahora). Lo necesitaremos para ambas bibliotecas de Python que instalaremos muy pronto.</p><h3 id="c-mo-instalar-en-linux"><strong>Cómo instalar en Linux</strong></h3><p>Si te encuentras en una máquina que usa Debian de base (como Ubuntu o Kali), este es el comando para instalar FFMPEG:</p><pre><code>sudo apt-get install ffmpeg</code></pre><p>Si estás usando otra distribución, las instrucciones están <a href="https://ffmpeg.org/download.html">acá</a>.</p><h3 id="c-mo-instalar-en-windows"><strong>Cómo instalar en Windows</strong></h3><p>Primero, hay que instalar el gestor de paquetes <a href="https://chocolatey.org/how-chocolatey-works">Chocolatey</a>. Las instrucciones están <a href="https://chocolatey.org/install">acá</a>, te espero. </p><p>Después de instalarlo correctamente, descarga el paquete desde una <strong>instancia de Powershell con permisos de administrador</strong>.</p><pre><code class="language-powershell">choco install ffmpeg
</code></pre><h3 id="c-mo-instalar-en-mac"><strong>Cómo instalar en Mac</strong></h3><p>Si todavía no lo tienes, <a href="https://brew.sh/">instala homebrew</a>. Luego, en la terminal:</p><pre><code>brew install ffmpeg</code></pre><h2 id="c-mo-descargar-audio-de-urls-de-youtube"><strong>Cómo descargar audio de URLs de YouTube</strong></h2><p>Primero, descarga el paquete <code>youtube-dl</code> de <code>pip</code>. Es <a href="https://github.com/ytdl-org/youtube-dl">uno de los más guardados en GitHub</a>.</p><p><code>pip install youtube-dl</code></p><p>Vamos a importar este módulo y luego declarar una función que va a descargar el audio en formato mp3 con una calidad razonable desde una URL de YouTube.</p><pre><code class="language-python">import youtube_dl # cliente para muchos portales de multimedia

# descarga yt_url al mismo directorio desde donde corre el script
def download_audio(yt_url):
    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([yt_url])

def main():
    yt_url = "https://www.youtube.com/watch?v=8OAPLk20epo"
    download_audio(yt_url)

main()
</code></pre><p>El método <code>.download()</code> va a descargar gradualmente el flujo de audio como un archivo .webm. Una vez que detecta que el archivo completo está disponible, utilizará <code>ffmpeg</code> para convertirlo en un archivo de audio MP3. Esto significa que si ocurre algo, como que la conexión a Internet se interrumpa cuando el archivo esté al 90% descargado, la descarga se reanudará en el 90% en lugar de comenzar desde el principio, lo cual es bastante útil. Ten en cuenta que si ya tienes el archivo mp3 descargado, la descarga se reiniciará y sobrescribirá el archivo.</p><p>Ejecuta tu script de Python. La descarga de audio de esta interpretación del Cuarto Movimiento de la Novena Sinfonía de Beethoven debería generar un archivo MP3 de aproximadamente 33 MB con el título del video disponible localmente. Es posible que la descarga sea un poco lenta, así que aprovecha para hacerte una taza de té.</p><p>Como puedes ver, es posible pasar parámetros opcionales a <code>youtube-dl</code> (que también estarán disponibles como un programa independiente de línea de comandos fuera del script). Una de sus capacidades es <a href="https://github.com/ytdl-org/youtube-dl#video-selection">descargar una serie de videos desde una URL de lista de reproducción</a>. Si estás más interesado, puedes consultar su documentación. Mantendré el uso más sencillo a lo largo de este tutorial.</p><h2 id="c-mo-recortar-el-archivo-descargado"><strong>Cómo recortar el archivo descargado</strong></h2><p>Con el archivo descargado, ahora vamos a dividirlo localmente de forma arbitraria (puede que hayas considerado si es posible simplemente descargar un fragmento de YouTube. Todos los métodos fiables que encontré básicamente se reducirán a descargarlo completo y luego editarlo localmente). Para esto, utilizaremos la biblioteca <a href="https://github.com/jiaaro/pydub">pydub</a>. Puedes instalarla de la siguiente manera:</p><pre><code class="language-python">pip install pydub</code></pre><p>Esta es una biblioteca bastante útil que te permite manipular por completo el audio, reducir o aumentar el volumen en ciertos intervalos, repetir clips, y más. Por ahora, solo estamos interesados en recortar.</p><p>Para recortar nuestro archivo descargado, tendremos que obtener el nombre de archivo de nuestro MP3 recién descargado, convertir los puntos de inicio y final de nuestro intervalo de audio deseado de 'horas:minutos:segundos' a milisegundos, y finalmente utilizar <code>pydub</code> para dividir nuestro archivo de audio.</p><h3 id="c-mo-obtener-el-nombre-del-archivo"><strong>Cómo obtener el nombre del archivo</strong></h3><p>Lamentablemente, el método <code>.download()</code> no nos va a devolver el nombre de archivo generado, al cual tampoco tendremos acceso, ya que solo estamos pasando la URL como parámetro. Pero tenemos Python, y es una herramienta fantástica.</p><p>Sabemos que estamos buscando un archivo .mp3 que se generó justo antes de nuestra operación de búsqueda de nombre de archivo (Python es monohilo y va a ejecutar el código de forma síncrona por defecto). Obtendremos el nombre de nuestro archivo más reciente en el directorio del script, y eso será nuestro archivo.</p><p>Podemos realizar esta operación listando todos los archivos .mp3 en el directorio local, recopilando sus marcas de tiempo como números enteros (lo que significa el tiempo en milisegundos contados desde una fecha en el pasado determinada; esto significa que cuanto mayor sea el valor, más en el tiempo se creó el archivo) y obteniendo el archivo con el valor más alto.</p><p>Para esto, necesitaremos los módulos <code>glob</code> para navegar por el directorio y <code>os</code> para obtener información de la marca de tiempo, ambos disponibles de forma nativa.</p><pre><code class="language-python">import glob
import os

def newest_mp3_filename():
	# lista todos los mp3s en el directorio local
    list_of_mp3s = glob.glob('./*.mp3')
    # devuelve aquel con mayor valor de timestamp (último creado)
    return max(list_of_mp3s, key = os.path.getctime)
</code></pre><h3 id="c-mo-obtener-hh-mm-ss-en-milisegundos"><strong>Cómo obtener HH:MM:SS en milisegundos</strong></h3><p>Una vez que cortemos nuestro archivo, <code>pydub</code> esperará intervalos de tiempo expresados en milisegundos. Pero para nosotros, los humanos, calcular el momento exacto en milisegundos cada vez que queramos recortar un video sería bastante molesto, así que le pediremos respetuosamente a la computadora que lo haga por nosotros.</p><p>Nuestra entrada será una cadena en el formato <strong>HH:MM:SS</strong>. Esto funciona bien si queremos recortar un video de más de una hora, pero la mayor parte del tiempo solo querremos obtener el intervalo de un minuto:segundo a otro. Así que también vamos a tener esto en cuenta.</p><p>Un milisegundo es 1/1000 de segundo, un minuto tiene 60 segundos y una hora tiene 60 minutos. Entonces, debemos obtener el valor para las horas, luego para los minutos, luego para los segundos, realizar la conversión a milisegundos en cada uno y luego sumar las partes para obtener el resultado.</p><pre><code class="language-python">def get_video_time_in_ms(video_timestamp):
    vt_split = video_timestamp.split(":")
    if (len(vt_split) == 3): # condicional en formato HH:MM:SS
        hours = int(vt_split[0]) * 60 * 60 * 1000
        minutes = int(vt_split[1]) * 60 * 1000
        seconds = int(vt_split[2]) * 1000
    else: # formato MM:SS
        hours = 0
        minutes = int(vt_split[0]) * 60 * 1000
        seconds = int(vt_split[1]) * 1000
    # marca de tiempo en milisegundos
    return hours + minutes + seconds
</code></pre><h3 id="c-mo-obtener-el-audio-recortado"><strong>Cómo obtener el audio recortado</strong></h3><p>Ahora leeremos nuestro archivo MP3 como un objeto de <code>pydub</code> y cortaremos el intervalo deseado. La sintaxis es exactamente la misma que las operaciones de corte en cadenas y arreglos, pero en lugar de un índice para un elemento, usaremos milisegundos para momentos específicos dentro del audio.</p><pre><code class="language-python">def get_trimmed(mp3_filename, initial, final = ""):
    if (not mp3_filename):
    	# levanta una excepción para detener el programa
        raise Exception("No se encontró ningún MP3 en el directorio local.")
    # lee el mp3 como un objeto de Pydub
    sound = AudioSegment.from_mp3(mp3_filename)
    t0 = get_video_time_in_ms(initial)
    print("Comenzando proceso de recorte para el archivo ", mp3_filename, ".\n")
    print("Iniciando en ", initial, "...")
    if (len(final) &gt; 0):
        print("...hasta ", final, ".\n")
        t1 = get_video_time_in_ms(final)
        return sound[t0:t1] # t0 hasta t1
    return sound[t0:] # t0 hasta el final
</code></pre><h2 id="c-mo-unirlo-todo"><strong>Cómo unirlo todo</strong></h2><blockquote>Alle Menschen werden Brüder,<br>Wo dein sanfter Flügel weilt.<br>-- Friedrich Schiller</blockquote><p>En caso de que te lo estuvieras preguntando, el fragmento anterior se traduce como "Todos los hombres se convertirán en hermanos, dondequiera que tus suaves alas revuelen". Es un fragmento de "<em>Oda a la alegría</em>", un poema de Friedrich Schiller que forma la mayor parte de la letra de las partes corales del Cuarto Movimiento.</p><p>Este es el fragmento más famoso del movimiento más famoso de la sinfonía más famosa de Beethoven. Sea quien seas, cuando y cómo hayas crecido, es muy probable que reconozcas esta pieza.</p><p>Ahora vamos a poner todo lo que hemos hecho juntos. Descargaremos el audio de YouTube, cortaremos el coro de la "<em>Oda a la Alegría</em>" (desde el minuto 9:51 hasta el minuto 14:04) y lo guardaremos como <code>&lt;nombre&gt; - TRIM.mp3</code>.</p><p>Si has seguido el tutorial correctamente, actualiza tu función <code>main()</code> para ejecutar cada paso de manera que al final tengas el MP3 completo y su versión recortada como archivos disponibles en el directorio desde el que ejecutes el script. No olvides ejecutar la función <code>main()</code> al final del script.</p><pre><code class="language-python">def main():
    yt_url = "https://www.youtube.com/watch?v=8OAPLk20epo"
    download_audio(yt_url)
    initial = "9:51"
    final = "14:04"
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("El proceso finalizó con éxito. Guardando archivo recortado como ", trimmed_filename)
    # guarda archivo con nuevo nombre
    trimmed_file.export(trimmed_filename, format="mp3")
</code></pre><h2 id="c-mo-agregar-interacci-n-desde-la-l-nea-de-comandos"><strong>Cómo agregar interacción desde la línea de comandos</strong></h2><p>Para esta parte, necesitaremos el módulo <code>sys</code> de Python, que lee la entrada pasada desde la línea de comandos, entre otras cosas. Simplemente actualizaremos las variables en la función <code>main()</code> para leer la entrada desde la línea de comandos en lugar de los datos actualmente codificados en el script.</p><p><code>ARGV</code> lee la entrada secuencialmente como un array, comenzando desde el índice 1 (el 0 representa el nombre del script de Python en ejecución). Lo configuraremos para que lea una URL como el primer argumento y, opcionalmente, instantes de inicio y finalización para el recorte.</p><pre><code class="language-python">import sys

def main():
    if (not len(sys.argv) &gt; 1):
        print("Por favor inserta una URL soportada por youtube-dl como tu primer argumento.")
        return
    yt_url = sys.argv[1]
    download_audio(yt_url)
    if (not len(sys.argv &gt; 2)): # terminar si no hay argumentos
        return
    initial = sys.argv[2]
    final = ""
    if (sys.argv[3]):
        final = sys.argv[3]
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("El proceso finalizó con éxito. Guardando archivo como ", trimmed_filename)
    # guarda archivo con nuevo nombre
    trimmed_file.export(trimmed_filename, format="mp3")
</code></pre><p>Ejecuta el archivo para probarlo. Recuerda actualizar el nombre del script con el mismo nombre que tienes en tu máquina.</p><pre><code class="language-bash">python ytauddown.py https://www.youtube.com/watch?v=8OAPLk20epo 9:51 14:04
</code></pre><h2 id="script-final"><strong>Script final</strong></h2><p>Esta es la versión final con todo integrado. Ten en cuenta que los comentarios sobre los módulos están relacionados solo con para qué los estamos utilizando y que la función <code>main()</code> se está invocando en la última línea.</p><pre><code class="language-python">import youtube_dl # cliente para muchos portales de multimedia
import glob # operaciones de directorio
import os # interfaz para información provista por el sistema operativo
import sys # interfaz para línea de comandos
from pydub import AudioSegment # sólo operaciones de audio

def newest_mp3_filename():
    # lista todos los mp3 en el directorio local
    list_of_mp3s = glob.glob('./*.mp3')
    # devuelve último mp3 creado
    return max(list_of_mp3s, key = os.path.getctime)

def get_video_time_in_ms(video_timestamp):
    vt_split = video_timestamp.split(":")
    if (len(vt_split) == 3): # condicional en formato HH:MM:SS 
        hours = int(vt_split[0]) * 60 * 60 * 1000
        minutes = int(vt_split[1]) * 60 * 1000
        seconds = int(vt_split[2]) * 1000
    else: # formato MM:SS 
        hours = 0
        minutes = int(vt_split[0]) * 60 * 1000
        seconds = int(vt_split[1]) * 1000
    # marca de tiempo en milisegundos
    return hours + minutes + seconds

def get_trimmed(mp3_filename, initial, final = ""):
    if (not mp3_filename):
        # levanta una excepción para interrumpir programa
        raise Exception("No MP3 found in local directory.")
    # lee mp3 como objeto de Pydub
    sound = AudioSegment.from_mp3(mp3_filename)
    t0 = get_video_time_in_ms(initial)
    print("Comenzando proceso de recorte para ", mp3_filename, ".\n")
    print("Comenzando desde ", initial, "...")
    if (len(final) &gt; 0):
        print("...hasta ", final, ".\n")
        t1 = get_video_time_in_ms(final)
        return sound[t0:t1] # t0 hasta t1
    return sound[t0:] # t0 hasta el final



# descarga yt_url al mismo directorio donde corre el script
def download_audio(yt_url):
    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([yt_url])

def main():
    if (not len(sys.argv) &gt; 1):
        print("Por favor inserta una URL soportada por youtube-dl como tu primer argumento.")
        return
    yt_url = sys.argv[1]
    download_audio(yt_url)
    if (not len(sys.argv &gt; 2)): # terminar si no hay argumentos
        return
    initial = sys.argv[2]
    final = ""
    if (sys.argv[3]):
        final = sys.argv[3]
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("El proceso finalizó con éxito. Descargando archivo como ", trimmed_filename)
    # descarga archivo con nuevo nombre
    trimmed_file.export(trimmed_filename, format="mp3")

# ejemplo
# python ytauddown.py https://www.youtube.com/watch?v=8OAPLk20epo 9:51 14:04
main()
</code></pre><h2 id="ejercicios-sugeridos">Ejercicios sugeridos</h2><ol><li>Detectar si la primera entrada es una URL válida o no. Consulta las expresiones regulares en Python si no sabes por dónde empezar.</li><li>Detectar si las segundas y terceras entradas tienen un formato válido (horas:minutos:segundos O minutos:segundos).</li><li>Agregar una opción para cambiar el nombre del archivo MP3 directamente desde la línea de comandos. Recuerda que los argumentos de ARGV se ejecutan en orden.</li><li>Refactorizar este script para interactuar con su funcionalidad utilizando una interfaz gráfica de usuario (GUI). Puede ser una aplicación web o local, tu elección.</li></ol><h2 id="consideraciones-finales"><strong>Consideraciones finales</strong></h2><p>Espero que disfrutes de este proyecto y le des un buen uso. </p><p>Recuerda que ganarse la vida como artista puede ser bastante difícil, especialmente para la mayoría que no cuenta con el respaldo de una empresa. No olvides apoyar a los artistas cuyo trabajo disfrutas siempre que puedas y también recuerda apoyar el software de código abierto.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Lectura y escritura de archivos en Python: Como crear, leer y escribir archivos ]]>
                </title>
                <description>
                    <![CDATA[ En este tutorial, aprenderás cómo abrir un archivo, escribir en él y cerrarlo. También aprenderás cómo leer desde el archivo usando Python. Al final de este tutorial, deberías conocer los conceptos básicos de cómo usar archivos en Python. Manejo de archivos en Python Manipular archivos es una actividad importante en ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/lectura-y-escritura-de-archivos-en-python-como-crear-leer-y-escribir-archivos/</link>
                <guid isPermaLink="false">64d0adc9a9935203e719a4aa</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beatriz I Bravo ]]>
                </dc:creator>
                <pubDate>Mon, 02 Oct 2023 20:51:21 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/08/Manipulando-archivos-en-Python.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/file-handling-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">File Handling in Python – How to Create, Read, and Write to a File</a>
      </p><p>En este tutorial, aprenderás cómo abrir un archivo, escribir en él y cerrarlo. También aprenderás cómo leer desde el archivo usando Python.</p><p>Al final de este tutorial, deberías conocer los conceptos básicos de cómo usar archivos en Python.</p><h2 id="manejo-de-archivos-en-python">Manejo de archivos en Python</h2><p>Manipular archivos es una actividad importante en cada aplicación web. Los tipos de actividades que se pueden realizar en el archivo abierto están controlados por los Modos de Acceso. Estos describen cómo se utilizará el archivo después de haber sido abierto.</p><p>Estos Modos de Acceso también especifican dónde debe ubicarse el controlador de archivo dentro del archivo. Similar a un puntero, un controlador de archivo indica dónde se deben leer o colocar los datos en el archivo.</p><p>En Python, hay seis métodos o modos de acceso, que son:</p><ol><li><strong>Solo lectura (‘r’):</strong> Este modo abre los archivos de texto solo para lectura. El inicio del archivo es donde se encuentra el controlador. Si el archivo no existe, se produce un error de I/O. Este es el modo predeterminado para abrir archivos.</li><li><strong>Leer y escribir (‘r+’):</strong> Este método abre el archivo tanto para lectura como para escritura. El inicio del archivo es donde se encuentra el controlador. Si el archivo no existe, se produce un error de I/O.</li><li><strong>Solo escritura (‘w’):</strong> Este modo abre el archivo solo para escritura. Los datos en los archivos existentes se modifican y sobrescriben. El inicio del archivo es donde se encuentra el controlador. Si el archivo aún no existe en la carpeta, se crea uno nuevo.</li><li><strong>Escribir y leer (‘w+’):</strong> Este modo abre el archivo tanto para lectura como para escritura. El texto se sobrescribe y se elimina de un archivo existente. El inicio del archivo es donde se encuentra el controlador.</li><li><strong>Solo agregar (‘a’):</strong> Este modo permite abrir el archivo para escritura. Si el archivo aún no existe, se crea uno nuevo. El controlador se establece al final del archivo. Los datos recién escritos se agregarán al final, siguiendo los datos escritos anteriormente.</li><li><strong>Agregar y leer (‘a+’): </strong>Usando este método, puedes leer y escribir en el archivo. Si el archivo aún no existe, se crea uno nuevo. El controlador se establece al final del archivo. El texto recién escrito se agregará al final, siguiendo los datos escritos anteriormente.</li></ol><p>A continuación se muestra el código necesario para crear, escribir y leer archivos de texto utilizando los métodos o modos de acceso de manejo de archivos de Python.</p><h2 id="c-mo-crear-archivos-en-python">Cómo crear archivos en Python</h2><p>En Python, se utiliza la función <code>open()</code> con una de las siguientes opciones: &nbsp;– "x" o "w" – para crear un archivo nuevo:</p><ul><li><strong><strong>"x" – Crea</strong>r</strong>: este comando creará un archivo nuevo solo si no existe ningún archivo con ese nombre, de lo contrario, devolverá un error. </li></ul><p>Ejemplo de cómo crear un archivo en Python usando el comando "x":</p><pre><code class="language-python">#crear un archivo de texto con la función de comando "x"

f = open("myfile.txt", "x")</code></pre><p>¡Hemos creado un nuevo archivo de texto vacío! Pero si vuelves a intentar el código anterior, por ejemplo, si intentas crear un nuevo archivo con el mismo nombre que usaste anteriormente (si deseas reutilizar el nombre de archivo anterior), recibirás un error que te notificará que el archivo ya existe. Se verá como la imagen a continuación:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/08/idle-shell.png" class="kg-image" alt="IDLE Shell showing an error that myfile.txt does not exist" width="600" height="400" loading="lazy"></figure><ul><li><strong><strong>"w" – </strong>Escribir</strong>: Este comando creará un nuevo archivo de texto, sin importar si hay un archivo en la memoria con el nuevo nombre especificado. No devuelve un error si encuentra un archivo existente con el mismo nombre, en su lugar, sobrescribirá el archivo existente.</li></ul><p>Ejemplo de como crear un archivo con el comando "w":</p><pre><code class="language-python">#creando un un texto con el el comando "w"

f = open("myfile.txt", "w")

#Este comando "w" también se puede utilizar para crear un archivo nuevo, pero a diferencia del comando "x", el comando "w" sobrescribirá cualquier archivo existente que se encuentre con el mismo nombre de archivo.</code></pre><p>Con el código anterior, ya sea que el archivo exista o no exista en la memoria, aún puede continuar y usar ese código. Solo tenga en cuenta que sobrescribirá el archivo si encuentra un archivo existente con el mismo nombre.</p><h2 id="c-mo-escribir-en-un-archivo-en-python">Cómo escribir en un archivo en <strong><strong>Python</strong></strong></h2><p>Existen dos métodos para escribir en un archivo en Python, que son:</p><h3 id="el-m-todo-write-"><strong>El método <strong><code>write()</code>:</strong></strong></h3><p>Esta función inserta la cadena en el archivo de texto en una sola línea.</p><p>Según el archivo que hemos creado anteriormente, la siguiente línea de código insertará la cadena en el archivo de texto creado, que es "myfile.txt."</p><pre><code class="language-python">
file.write("Hello There\n")</code></pre><h3 id="el-m-todo-writelines-"><strong>El método <strong><code>writelines()</code>:</strong></strong></h3><p>Esta función inserta varias cadenas al mismo tiempo. Se crea una lista de elementos de cadena y luego cada cadena se agrega al archivo de texto.</p><p>Usando el archivo creado anteriormente arriba, la siguiente línea de código insertará la cadena en el archivo de texto creado, que es "myfile.txt."</p><pre><code class="language-python">f.writelines(["Hello World ", "You are welcome to Fcc\n"])</code></pre><p>Ejemplo:</p><pre><code class="language-python">#Este programa muestra cómo escribir datos en un archivo de texto.This 

file = open("myfile.txt","w")
L = ["This is Lagos \n","This is Python \n","This is Fcc \n"]

#Asignando ["This is Lagos \n","This is Python \n","This is Fcc \n"]  a 
#la variable L, se puede usar cualquier letra o palabra de tu elección.
#Las variables son contenedores en los que se pueden almacenar valores.
#El \n se coloca para indicar el final de la línea.

file.write("Hello There \n")
file.writelines(L)
file.close()

# Usar close() para cambiar los modos de acceso a archivos</code></pre><h2 id="c-mo-leer-desde-un-archivo-de-texto-en-python">Cómo leer desde un archivo de texto en Python</h2><p>Hay tres métodos para leer datos de un archivo de texto en Python. Ellos son:</p><h3 id="el-m-todo-read-"><strong>El método <strong><code>read()</code>:</strong></strong></h3><p>Esta función devuelve los bytes leídos como una cadena. Si no se especifica ninguna <strong>n</strong>, lee el archivo completo.<br>Ejemplo:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
#('r’) opens the text files for reading only
print(f.read())
#El "f.read" imprime los datos en el archivo de texto en la consola cuando se ejecuta.</code></pre><h3 id="el-m-todo-readline-"><strong>El método <strong>readline():</strong></strong></h3><p>Esta función lee una línea de un archivo y la devuelve como una cadena. Lee como máximo n bytes para el n especificado. Pero incluso si n es mayor que la longitud de la línea, no lee más de una línea.</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
</code></pre><h3 id="el-m-todo-readlines-"><strong>El método <strong><code>readlines()</code>:</strong></strong></h3><p>Esta función lee todas las líneas y las devuelve como elementos de cadena en una lista, uno para cada línea.</p><p>Puedes leer las dos primeras líneas llamando &nbsp;<code>readline()</code> &nbsp;dos veces, leyendo las dos primeras líneas del archivo:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
print(f.readline())
</code></pre><h2 id="c-mo-cerrar-un-archivo-de-texto-en-python">Cómo cerrar un archivo de texto en Python</h2><p>Es una buena práctica cerrar siempre el archivo cuando se ha terminado con él.</p><h3 id="ejemplo-para-cerrar-un-archivo-de-texto-">Ejemplo para cerrar un archivo de texto:</h3><p>Esta función cierra el archivo de texto cuando haya terminado de modificarlo:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
f.close()
</code></pre><p>La función <code>close()</code> &nbsp;al final del código le dice a Python, ya terminé con esta sección de creación o lectura, es como decir Fin. </p><h3 id="ejemplo-"><strong><strong>E</strong>jemplo<strong>:</strong></strong></h3><p>El siguiente programa muestra más ejemplos de formas de leer y escribir datos en un archivo de texto. Cada línea de código tiene comentarios para ayudar a comprender lo que está sucediendo:</p><pre><code class="language-python"># Programa para mostrar varias formas de leer y
# escribir datos en un archivo de texto.

file = open("myfile.txt","w")
L = ["This is Lagos \n","This is Python \n","This is Fcc \n"]

# Asignar ["This is Lagos \n","This is Python \n","This is Fcc \n"]
# a la variable L
  
#El \n se coloca para indicar fin de línea

file.write("Hello There \n")
file.writelines(L)
file.close()
# Usar close() para cambiar los modos de acceso a archivos



file = open("myfile.txt","r+") 
print("Output of the Read function is ")
print(file.read())
print()

# La función seek(n) Mueve el puntero hacia el byte indicado,
# el byte desde el principio.
file.seek(0) 
  
print( "The output of the Readline function is ")
print(file.readline()) 
print()
  
file.seek(0)
  
# Mostrar la diferencia entre lectura y línea de lectura

print("Output of Read(12) function is ") 
print(file.read(12))
print()

file.seek(0)
  
print("Output of Readline(8) function is ") 
print(file.readline(8))
  
file.seek(0)
# Función de lectura de líneas
print("Output of Readlines function is ") 
print(file.readlines()) 
print()
file.close()

</code></pre><p>Este es el resultado del código anterior cuando se ejecuta en la consola. Se asignó &nbsp;"This is Lagos", "This is Python", y "This is Fcc" a "L" y luego se pidió que imprima, usando la función ''file.read''.</p><p>El código anterior muestra que la función "readline()" devuelve la letra según el número especificado, mientras que la función "readlines()" devuelve cada cadena asignada a "L", incluido \n. Es decir, la función "readlines()" imprimirá todos los datos del archivo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/08/output-file.png" class="kg-image" alt="IDLE Shell showing the output of the program" width="600" height="400" loading="lazy"></figure><h2 id="conclusi-n"><strong><strong>Conclusi</strong>ó<strong>n</strong></strong></h2><p>Con suerte, después de leer este tutorial, deberías comprender qué es el manejo de archivos en Python. También aprendimos los modos/métodos necesarios para crear, escribir, leer, y cerrar un archivo de texto usando algunos ejemplos básicos de Python.</p><p><br>Gracias por leer!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Añadir una cadena en Python: Añadiendo STR ]]>
                </title>
                <description>
                    <![CDATA[ En este artículo, aprenderás los diferentes métodos para añadir cadenas en Python. Otro término comúnmente usado se habla sobreañadir cadenas es concatenación. Por eso, usualmente verás estos términos — añadir y concatenar — usados de manera intercambiable. De cualquier manera, añadir o concatenar cadenas significa agregar o unir el valor ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/anadir-una-cadena-en-python-anadiendo-str/</link>
                <guid isPermaLink="false">648cc1b19764040891b7e7f1</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sofia Dominguez ]]>
                </dc:creator>
                <pubDate>Mon, 31 Jul 2023 00:59:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/07/alex-chumak-zGuBURGGmdY-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/append-a-string-in-python-str-appending/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Append a String in Python – STR Appending</a>
      </p><p>En este artículo, aprenderás los diferentes métodos para añadir cadenas en Python.</p><p>Otro término comúnmente usado se habla sobreañadir cadenas es concatenación. Por eso, usualmente verás estos términos — añadir y concatenar — usados de manera intercambiable.</p><p>De cualquier manera, añadir o concatenar cadenas significa agregar o unir el valor de una cadena a otra cadena.</p><p>Veamos las diferentes maneras en las que puedes hacer eso con algunos códigos de ejemplo</p><h2 id="c-mo-a-adir-una-cadena-en-python-usando-el-operador-"><strong>Cómo Añadir una Cadena en<strong> Python </strong>Usando el Operador<strong> <code>+</code> </strong></strong></h2><p>Puedes usar el operador <code>+</code> &nbsp;para añadir dos o más cadenas. Aquí hay un ejemplo:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print(nombre + apellido)
# JohnDoe</code></pre><p>En el ejemplo de arriba, creamos dos variables de cadenas – <code>nombre</code> y <code>apellido</code>. Estas tienen los valores de "John" y "Doe", respectivamente.</p><p>Para añadir esas dos variables, usamos el operador <code>+</code>: <code>nombre</code> + <code>apellido</code>.</p><p>Te darás cuenta de que en el resultado que obtuvimos las dos variables quedaron unidas sin espacios: <code>JohnDoe</code>.</p><p>Puedes agregar un espacio después del valor de <code>nombre</code> : "John ". O antes de <code>apellido</code> : " Doe". Esto es:</p><pre><code class="language-python">nombre = "John "
apellido = "Doe"

print(nombre + apellido)
# John Doe</code></pre><p>También puedes agregar espacio usando comillas cuando añadas las cadenas. Así es como:</p><pre><code class="language-python">nombre = "John "
apellido = "Doe"

print(nombre + "" + apellido)
# John Doe</code></pre><h2 id="c-mo-agregar-una-cadena-en-python-usando-el-m-todo-join-"><strong>Cómo<strong> </strong>agregar<strong> </strong>una<strong> </strong>cadena<strong> </strong>e<strong>n Python </strong>u<strong>s</strong>ando el método<strong> <code>join()</code> </strong></strong></h2><p>Otra forma en la que puedes agregar cadenas en Python es usando el método <code>join()</code>.</p><p>El método <code>join()</code> toma un objeto iterable — Listas, Tuplas, Cadenas, Conjuntos, Diccionarios — como su parámetro. Así es como se ve la sintaxis:</p><pre><code class="language-python">cadena.join(objeto_iterable)</code></pre><p>Aquí hay un ejemplo que muestra como podemos agregar cadenas usando el método <code>join()</code>:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print("".join([nombre, apellido]))
# JohnDoe</code></pre><p>Aquí, le pasamos nuestras dos variables de cadenas como parámetros al método <code>join()</code>.</p><p>También te darás cuenta de que las variables fueron anidadas en corchetes &nbsp;<code>[]</code>, creando una lista de cadenas: <code>[nombre, apellido]</code>. &nbsp;Esto es porque el método solo toma un parámetro, el cual debe ser un objeto iterable.</p><p>Algo extraño acerca del método <code>join()</code> son las comillas que van luego del punto fi</p><p>Puedes usar esas comillas para declarar lo que aparece entre los elementos en sus valores de objeto iterables. Dejame demostrártelo con un ejemplo.</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print("#".join([nombre, apellido]))
# John#Doe</code></pre><p>En el ejemplo de arriba, añadí el símbolo <code>#</code> entre comillas: <code>"#".join([nombre, apellido])</code>. Este <code>#</code> fue añadido entre nuestras cadenas: <code>John#Doe</code>.</p><p>En la última sección, hemos usado diferentes métodos para agregar espacio entre nuestras cadenas. Puedes lograrlo fácilmente agregando un espacio en las comillas que preceden al método <code>join()</code>:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print(" ".join([nombre, apellido]))
# John Doe</code></pre><h2 id="c-mo-a-adir-una-cadena-en-python-usando-el-m-todo-de-cadena-format-"><strong>Cómo añadir una cadena<strong> </strong>e<strong>n Python </strong>usando el método de cadena<strong> <code>format()</code> </strong></strong></h2><p>Así es como se ve la sintaxis para el método de cadena <code>format()</code>:</p><pre><code class="language-txt">{}.format(valor)</code></pre><p>Básicamente, el método de cadena formato, toma un <code>value</code> como parámetro en la sintaxis de arriba y lo inserta entre llaves. El resultado será una cadena.</p><p>Aquí hay un ejemplo:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print("{} {}".format(nombre, apellido))
# John Doe</code></pre><p>Desde que proveemos dos llaves en el ejemplo y dos parámetros (<code>nombre</code> y <code>apellido</code>), el método de cadena <code>format()</code> inserta las cadenas en sus respectivas llaves.</p><p>Puedes añadir más cadenas dentro de las comillas donde encuentres llaves. Esto no alterará la operación del método de cadena <code>format()</code> — las cadenas seguirán siendo insertadas en las llaves. Esto es:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print("Mi nombre es {} {}".format(nombre, apellido))
# Mi nombre es John Doe</code></pre><h2 id="c-mo-a-adir-una-cadena-en-python-usando-la-cadena-f"><strong>Cómo añadir una cadena en Python usando<strong> </strong>la cadena-f</strong></h2><p>Este método es muy fácil de entender. La cadena-f fue creada en Python para hacer el formato e interpolación de cadena más fácil. Pero también puede usarlo para añadir cadenas.</p><p>Para usar la cadena-f, simplemente escribes una f seguido de comillas: <code>f""</code>. Luego insertas cadenas y los nombres de las variables entre comillas. Todos los nombres de las variables deben colocarse entre llaves.</p><p>Aquí hay un ejemplo:</p><pre><code class="language-python">nombre = "John"
apellido = "Doe"

print(f"{nombre} {apellido}")
# John Doe</code></pre><h2 id="resumen"><strong>Resumen</strong></h2><p>En este artículo, hemos discutido los diferentes métodos que puedes usar para añadir cadenas en Python.</p><p>Añadir una cadena a otra significa unirlas.</p><p>Como hemos discutido en este artículo, a lo largo de los ejemplos de código, puedes añadir cadenas en Python usando el operador <code>+</code> , el método <code>join()</code>, el método de cadena <code>format()</code>, y la cadena-f .</p><p>¡Feliz programación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ %.2f en Python – ¿Que significa? ]]>
                </title>
                <description>
                    <![CDATA[ En Python existen varios métodos para dar formato a los tipos de datos. El operador de formato %f es usado específicamente para dar formato a valores flotantes (números con decimales) Podemos utilizar %f para especificar el número de dígitos decimales a ser retornados cuando un número con punto flotante (decimal) ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/2f-en-python-que-significa/</link>
                <guid isPermaLink="false">6499ada917b3ed088cdd38f6</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Josué Leiva ]]>
                </dc:creator>
                <pubDate>Mon, 31 Jul 2023 00:19:49 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/06/susan-holt-simpson-GQ327RPuxhI-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/2f-in-python-what-does-it-mean/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">%.2f in Python – What does it Mean?</a>
      </p><p>En Python existen varios métodos para dar formato a los tipos de datos.</p><p>El operador de formato <code>%f</code> es usado específicamente para dar formato a valores flotantes (números con decimales)</p><p>Podemos utilizar <code>%f</code> para especificar el número de dígitos decimales a ser retornados cuando un número con punto flotante (decimal) es redondeado.</p><h2 id="c-mo-usar-el-formateador-f-en-python">Cómo usar el formateador <code>%f</code> en Python</h2><p>En esta sección, verás algunos ejemplos en cómo usar el formateador <code>%f</code> y los varios parámetros con los que puede ser usado para retornar diversos resultados.</p><p>Este es el primer ejemplo:</p><pre><code class="language-python">numero_flotante = 1.9876

print("%f" % numero_flotante)
# 1.987600</code></pre><p>El usar <code>%f</code> en el ejemplo de arriba añadió dos ceros al número. Pero no hay nada muy especial sobre ello. Pronto veremos que más podemos hacer para modificar el valor resultante.</p><p>Nota que el operador <code>%f</code> debe estar anidado dentro de comillas, y debe estar separado del número flotante al cual está formateando mediante el operador módulo (%): &nbsp;<code>"%f" % numero_flotante</code>.</p><p>Veamos otro ejemplo:</p><pre><code class="language-python">numero_flotante = 1.9876
print("%.1f" % numero_flotante)

#2.0</code></pre><p>En el código de arriba, hemos añadido .1 entre <code>%</code> y <code>f</code> en el operador <code>%f</code>. Esto significa que queremos redondear el número hasta un dígito decimal.</p><p>Nota que obtendrás un resultado similar al primer ejemplo si omites el punto (.) que viene antes del dígito que le entregamos en medio % y f.</p><p>El valor resultante en nuestro ejemplo es <code>2.0</code> el cual fue retornado cuando 1.9876 fue redondeado a un dígito decimal.</p><p>Usemos <code>%.2f</code> y veamos que sucede.</p><pre><code class="language-python">numero_flotante = 1.9876
print("%.2f" % numero_flotante)
# 1.99</code></pre><p>Como era de esperarse, el número de punto flotante (1.9876) fue redondeado hasta dos lugares decimales - 1.99. Por lo que <code>%.2f</code> significa redondear a dos espacios decimales.</p><p>Puedes jugar con el código para ver que sucede mientras cambias el número en el operador de formato.</p><h2 id="c-mo-usar-el-formateador-d-en-python">Cómo usar el formateador <code>%d</code> en Python</h2><p>Otro método de formateo que podemos usar con números de punto flotante en Python es el formateador <code>%d</code>. Este retorna el número entero en un número de punto flotante.</p><p>Aquí hay un ejemplo:</p><pre><code class="language-python">numero_flotante = 1.9876
print("%d" % numero_flotante)
# 1</code></pre><p>En el ejemplo de arriba, hemos creado un número de punto flotante: <code>numero_flotante = 1.9876</code></p><p>Cuando la variable <code>numero_flotante</code> es formateada usando <code>%d</code>, solo 1 fue retornado.</p><p>El formateador <code>%d</code> ignora los números decimales y solo retorna la parte entera. </p><h2 id="resumen">Resumen</h2><p>En este artículo, hablamos sobre el operador de formato <code>%f</code> en Python. Lo utilizas para darle formato a los números flotantes.</p><p>Dependiendo en los parámetros entregados, el formateador <code>%f</code> redondea un valor flotante al decimal más cercano provisto.</p><p>También hablamos del operador de formato, <code>%d</code> el cual solo retorna el valor entero de un número flotante.</p><p>¡Feliz codificación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Scripts de automatización en Python que debes saber ]]>
                </title>
                <description>
                    <![CDATA[  Todos hemos tenido las mismas tareas aburridas que tenemos que hacer una y otra vez, por suerte, podemos automatizar algunos de estos procesos, y así enfocarnos en cosas que realmente requieran nuestra energía y atención. En este artículo hablaremos de algunos scripts de automatización en Python, que podrás usar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/scripts-de-automatizacion-en-python-que-debes-saber/</link>
                <guid isPermaLink="false">64065af0e1521006f2da6895</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Fri, 19 May 2023 01:37:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/03/Python-Automation-Scripts-You-Should-Know.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/python-automation-scripts/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Automation Scripts You Should Know</a>
      </p><p> Todos hemos tenido las mismas tareas aburridas que tenemos que hacer una y otra vez, por suerte, podemos automatizar algunos de estos procesos, y así enfocarnos en cosas que realmente requieran nuestra energía y atención.</p><p>En este artículo hablaremos de algunos scripts de automatización en Python, que podrás usar fácilmente para automatizar tareas. Es importante entender que será código ya escrito que nos ayudará a realizar muchas de nuestras tareas repetitivas.</p><p>Recomiendo firmemente tener algo de experiencia en el lenguaje de programación Python antes que continuar con este artículo.</p><p>Empecemos.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe src="https://tenor.com/embed/25608746" width="600" height="400" frameborder="0" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle;"></iframe><figcaption>gif, Bailando</figcaption></figure><h2 id="como-automatizar-la-correcci-n-de-errores-en-un-texto"><strong>Como automatizar la corrección de errores en un texto</strong></h2><p>Lo primero en la lista es la corrección de textos. Siempre que quieras eliminar errores ortográficos o de escritura en un escrito, puedes utilizar este proyecto que utiliza el módulo <strong><strong><code>Lmproof</code></strong></strong>.</p><pre><code class="language-python"># Python Proofreading
# pip install lmproof
import lmproof
def proofread(text):
    proofread = lmproof.load("en")
    correction = proofread.proofread(text)
    print("Original: {}".format(text))
    print("Correction: {}".format(correction))
    
proofread("Tu texto")</code></pre><p>Primero necesitarás instalar la librería &nbsp;<strong><strong><code>lmproof</code></strong></strong>. Después podrás utilizar la función <strong><strong><code>proofread()</code></strong></strong>, que toma un <strong><code>texto</code> </strong>como parámetro. La función se ejecuta y muestra el texto original y el texto corregido. Puedes usarlo para corregir errores de forma rápida de un escrito o un artículo corto.</p><h2 id="como-automatizar-la-reproducci-n-de-m-sica-de-manera-aleatoria"><strong>Como automatizar la reproducción de música de manera aleatoria</strong></h2><p>Mientras trabajan, muchos programadores aman escuchar música. Para estos amantes de la música (como yo), este script escoge aleatoriamente canciones desde una carpeta y las reproduce con la ayuda de los módulos de Python <code><strong><strong>OS</strong></strong></code> y <code><strong><strong>random</strong></strong></code>.</p><pre><code class="language-python">import random, os
music_dir = 'E:\\music diretory'
songs = os.listdir(music_dir)

song = random.randint(0,len(songs))

# Muestra el nombre de la cancion
print(songs[song])  

os.startfile(os.path.join(music_dir, songs[0])) </code></pre><p>El código va a la carpeta donde están las canciones que quieras reproducir y las pone en una lista. Entonces las reproduce de manera aleatoria una después de la otra. Con <strong><strong><code>os.startfile</code></strong> </strong>reproducimos la canción.</p><h2 id="convertir-autom-ticamente-de-pdf-a-csv"><strong>Convertir automáticamente de PDF a CSV</strong></h2><p>Algunas veces necesitarás convertir datos de un <code><strong><strong>pdf</strong></strong></code> &nbsp;a datos <code><strong><strong>CSV</strong></strong></code><strong><strong> </strong> </strong>(comma separated value, valores separados por coma), para utilizarlos para algún análisis de datos. En estos casos, este script será de mucha ayuda.</p><pre><code class="language-python">import tabula

filename = input("Enter File Path: ")
df = tabula.read_pdf(filename, encoding='utf-8', spreadsheet=True, pages='1')

df.to_csv('output.csv')</code></pre><p>Tendrás que instalar la librería <code><strong><strong>tabula</strong></strong></code> &nbsp;utilizando <code><strong><strong>pip</strong></strong></code> para poder ejecutar este código. Después de instalarla puedes pasarle tu archivo PDF para convertirlo a CSV.</p><p>La librería viene con la función <code><strong><strong>read_pdf()</strong></strong></code>, que toma un archivo y lo lee. Y para terminar la automatización se utiliza la función <code><strong><strong>to_csv()</strong></strong></code><strong> </strong>para convertir el archivo a <strong><strong>CSV</strong>.</strong></p><h2 id="compresor-autom-tico-de-fotos"><strong>Compresor automático de fotos</strong></h2><p>También puedes reducir el tamaño de una imagen comprimiéndola – Manteniendo la calidad original</p><pre><code class="language-python">import PIL
from PIL import Image
from tkinter.filedialog import *

fl=askopenfilenames()
img = Image.open(fl[0])
img.save("output.jpg", "JPEG", optimize = True, quality = 10)</code></pre><p>Puedes usar <strong><strong>PIL</strong> </strong>(Python Imaging Library - libreria de images de Python) para manipular imágenes, añadir filtros, desenfocar, cambiar nitidez, compresión de imágenes, cambiar bordes y mucho más.</p><h2 id="descargas-autom-ticas-de-youtube"><strong>Descargas automáticas de YouTube</strong></h2><p>El siguiente código automatiza la descarga de videos de YouTube. Simplemente, usa este programa para hacer tus descargas sin la necesidad de otras aplicaciones o páginas.</p><pre><code class="language-python">import pytube

link = input('Youtube Video URL')
video_download = pytube.Youtube(link)
video_download.streams.first().download()
print('Video Downloaded', link)</code></pre><p>La librería <code>pytube</code> es muy fácil usar y con ella podrás descargar videos en tu computadora local. Todo lo que necesitas es ingresar el enlace del video y el método <strong><code><strong>download</strong></code></strong><code><strong>()</strong></code><strong> </strong>lo descargara en tu computadora</p><h2 id="texto-a-voz-autom-ticamente"><strong>Texto a voz automáticamente</strong></h2><p>Haremos uso de la API "texto a voz" de Google para este código. La API está actualizada y funciona con diferentes idiomas y podrás seleccionar diferentes tonos y tipos de voz.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">from pygame import mixer
from gtts import gTTS

def main():
   tts = gTTS('Like This Article')
   tts.save('output.mp3')
   mixer.init()
   mixer.music.load('output.mp3')
   mixer.music.play()
   
if __name__ == "__main__":
   main()</code></pre><figcaption>,&nbsp;</figcaption></figure><h2 id="como-convertir-autom-ticamente-im-genes-a-pdf"><strong>Como convertir automáticamente imágenes a PDF</strong></h2><p>Esta es una tarea muy común que probablemente harás varias veces. Talvez querrás convertir una sola o varias imágenes a PDF.</p><p><strong>Como convertir una sola imagen a PDF</strong>:</p><pre><code class="language-python">import os
import img2pdf
with open("output.pdf", "wb") as file:
   file.write(img2pdf.convert([i for i in os.listdir('path to image') if i.endswith(".jpg")]))</code></pre><p><strong>Como convertir varias imágenes a PDF<strong>:</strong></strong></p><pre><code class="language-python">from fpdf import FPDF
Pdf = FPDF()

list_of_images = ["wall.jpg", "nature.jpg","cat.jpg"]
for i in list_of_images:
   Pdf.add_page()
   Pdf.image(i,x,y,w,h)
   Pdf.output("result.pdf", "F")</code></pre><p>Aquí estamos usando la librería &nbsp;<code><strong><strong>image2pdf</strong></strong></code> de Python para convertir nuestra imagen a PDF. También podemos convertir varias imágenes a PDF con solo unas cuantas líneas de código.</p><h2 id="verificador-de-plagio-autom-tico"><strong>Verificador de plagio automático</strong></h2><p>El plagio es el acto de presentar ideas o palabras como tuyas, con o sin el permiso de la otra persona, integrándolas a un trabajo o escrito, sin dar crédito al autor original.</p><p>Este código puede ser muy útil cuando quieras buscar plagio entre 2 archivos.</p><pre><code class="language-python">from difflib import SequenceMatcher
def plagiarism_checker(f1,f2):
    with open(f1,errors="ignore") as file1,open(f2,errors="ignore") as file2:
        f1_data=file1.read()
        f2_data=file2.read()
        res=SequenceMatcher(None, f1_data, f2_data).ratio()
        
print(f"These files are {res*100} % similar")
f1=input("Enter file_1 path: ")
f2=input("Enter file_2 path: ")
plagiarism_checker(f1, f2)</code></pre><h2 id="como-hacer-un-acortador-de-urls"><strong>Como hacer un acortador de URLs</strong></h2><p>Una URL muy larga puede ser molesta para leer o compartir, Para acortar una URL, en este código hacemos uso de una API.</p><pre><code class="language-python">from __future__ import with_statement
import contextlib
try:
	from urllib.parse import urlencode
except ImportError:
	from urllib import urlencode
try:
	from urllib.request import urlopen
except ImportError:
	from urllib2 import urlopen
import sys

def make_tiny(url):
	request_url = ('http://tinyurl.com/app-index.php?' + 
	urlencode({'url':url}))
	with contextlib.closing(urlopen(request_url)) as response:
		return response.read().decode('utf-8')

def main():
	for tinyurl in map(make_tiny, sys.argv[1:]):
		print(tinyurl)

if __name__ == '__main__':
	main()
    

'''

-----------------------------OUTPUT------------------------
python url_shortener.py https://www.wikipedia.org/
https://tinyurl.com/bif4t9

'''
    </code></pre><h2 id="probador-de-velocidad-de-internet"><strong>Probador de velocidad de internet</strong></h2><p>La API para prueba de velocidad de OOKLA, permite comprobar el ping y la velocidad de internet, este pequeño código medirá la velocidad de subida y de bajada.</p><pre><code class="language-python"># Internet Speed tester
# pip install speedtest-cli
import speedtest as st

# Set Best Server
server = st.Speedtest()
server.get_best_server()

# Test Download Speed
down = server.download()
down = down / 1000000
print(f"Download Speed: {down} Mb/s")

# Test Upload Speed
up = server.upload()
up = up / 1000000
print(f"Upload Speed: {up} Mb/s")

# Test Ping
ping = server.results.ping
print(f"Ping Speed: {ping}")

</code></pre><p>Aunque haya otras alternativas como <a href="https://www.freecodecamp.org/news/p/596c046e-0ba5-4a99-bf4d-eb3e0bebe75c/www.fast.com">fast.com</a>, con este código puedes hacerlo de manera rápida utilizando Python.</p><h2 id="conclusi-n">Conclusión</h2><p>Hemos visto 10 ejemplos de automatización con Python en este artículo, espero que lo hayas encontrado útil. También puedes investigar un poco más sobre las librerías utilizadas y así expandir tu conocimiento.</p><p>Contáctame en <a href="https://www.twitter.com/Shittu_Olumide_">Twitter</a> o en <a href="https://www.freecodecamp.org/news/p/596c046e-0ba5-4a99-bf4d-eb3e0bebe75c/linkedin.com/in/olumide-shittu">LinkedIn</a>.</p><p><strong>! Y que tengas un gran día programando¡</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ ¿Qué hay en un __name__ (de Python)? ]]>
                </title>
                <description>
                    <![CDATA[ Una introducción a la variable __name__ y su uso en Python Es muy probable que hayas visto la variable __name__ cuando has revisado código de Python. A continuación puedes ver un fragmento de código de ejemplo de cómo puede lucir:  if __name__ == '__main__':    main() En ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/que-hay-en-un-__name__-de-python/</link>
                <guid isPermaLink="false">643d717910657f0643decac0</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Gibran Pelayo M. ]]>
                </dc:creator>
                <pubDate>Sat, 29 Apr 2023 14:08:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/04/python_1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/whats-in-a-python-s-name-506262fe61e8/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What’s in a (Python’s) __name__?</a>
      </p><h4 id="una-introducci-n-a-la-variable-__name__-y-su-uso-en-python"><strong>Una introducción a la variable __<strong>name</strong></strong>__ y su uso en Python</h4><p>Es muy probable que hayas visto la variable <code>__name__</code> cuando has revisado código de Python. A continuación puedes ver un fragmento de código de ejemplo de cómo puede lucir: </p><pre><code>if __name__ == '__main__':    main()</code></pre><p>En este artículo quiero mostrarte cómo puedes hacer uso de esta variable para crear módulos en Python. </p><h4 id="-por-qu-se-usa-la-variable-_-_name_-_"><strong>¿Por qué se usa la variable<strong> _ _name_ _</strong> <strong>?</strong></strong></h4><p>La variable <code>__name__</code> (dos guiones bajos antes y después) es una variable especial de Python. Toma su valor dependiendo de cómo se ejecute el script contenedor.</p><p>A veces escribes un script con funciones que también pueden ser útiles en otros scripts. En Python, puedes importar ese script como un módulo en otro script.</p><p>Gracias a esta variable especial, puedes decidir si quieres ejecutar ese script, o importar las funciones definidas en el mismo.</p><h4 id="-qu-valores-puede-contener-la-variable-__name__"><strong>¿Qué valores puede contener la variable __<strong><strong>name</strong></strong>__ ?</strong></h4><p>Cuando ejecutas tu script, la variable <code>__name__</code> es igual a <code>__main__</code> . Cuando importas el script contenedor, contendrá el nombre del script. </p><p>Veamos estos dos casos de uso y describamos el proceso con dos ilustraciones.</p><h4 id="escenario-1-ejecutar-el-script"><strong>Escenario 1 - Ejecutar el script </strong></h4><p>Supongamos que escribimos el script <code>nombreScript.py</code> de la siguiente manera: </p><pre><code>def miFuncion():    print 'El valor de __name__ es ' + __name__</code></pre><pre><code>def main():    miFuncion()</code></pre><pre><code>if __name__ == '__main__':    main()</code></pre><p>Si ejecutas nombreScript.py, se sigue el proceso de abajo. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/04/ambito-1.png" class="kg-image" alt="PljpjxnM1OMMW7IkexNxVfwrKhP0RH-isapH" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/04/ambito-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/04/ambito-1.png 800w" sizes="(min-width: 720px) 720px" width="800" height="600" loading="lazy"><figcaption></figcaption></figure><p>Antes de que ejecute cualquier otro código, la variable <code>__name__</code> se establece a __main__. Después, las sentencias def de <code>main</code> y <code>miFuncion</code> se ejecutan. Debido a que la condición se evalúa a verdadero, la función main es llamada. Esta a su vez llama a miFuncion. Esto imprime el valor de <code>__main__</code>. </p><h4 id="escenario-2-importar-el-script-en-otro-script"><strong>Escenario 2 - Importar el script en otro script </strong></h4><p>Si queremos reusar miFuncion en otro script, por ejemplo <code>importandoScript.py</code>, podemos importar <code>nombreScript.py</code> como un módulo.</p><p>El código en<code>importandoScript.py</code> podría ser el siguiente:</p><pre><code>import nombreScript as ns</code></pre><pre><code>ns.miFuncion()</code></pre><p>Entonces tenemos dos ámbitos: uno de <code>importandoScript</code> y el segundo de <code>nombreScript</code>. En la imagen puedes ver como difiere del primer caso de uso. </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/04/defFuncts.png" class="kg-image" alt="k9OxzvJAP-s5qeZg88jUCOCVy1syrQu4oKds" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/04/defFuncts.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/04/defFuncts.png 800w" sizes="(min-width: 720px) 720px" width="800" height="500" loading="lazy"></figure><p>En importandoScript.py la variable <code>__name__</code> se establece a __main__. Al importar nombreScript, Python empieza a buscar un archivo agregando <code>.py</code> al nombre del módulo. Luego ejecuta el código contenido en el archivo importado.</p><p>Pero esta vez se establece a nombreScript; de nuevo las sentencias def para main y miFuncion son ejecutadas, pero ahora la condición evalúa a falso y main no es llamado.</p><p>En importandoScript.py llamamos a miFuncion que da como salida nombreScript. NombreScript es conocida por miFuncion cuando esa función fue definida.</p><p>Si imprimieras <code>__name__</code> en importandoScript, saldría <code>__main__</code>. La razón de esto es que Python usa el valor conocido en el ámbito de importandoScript.</p><h4 id="conclusi-n"><strong>Conclusión</strong></h4><p>En este breve artículo, expliqué cómo puedes usar la variable <code>__name__</code> para escribir módulos. También puedes ejecutar estos módulos por sí mismos. Esto se puede lograr al hacer uso de cómo los valores de estas variables cambian dependiendo de dónde ocurren. </p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ El mejor manera para aprender Python: Tutorial de programación en Python para principiantes ]]>
                </title>
                <description>
                    <![CDATA[ Python es un gran lenguaje de programación para aprender y que puedes usar en una variedad de áreas en desarrollo de software.  Tú puedes usar Python para desarrollo de páginas web, análisis de datos, aprendizaje automático, inteligencia artificial y más.  Con la enorme cantidad de recursos para escoger, a ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/el-mejor-manera-para-aprender-python-tutorial-de-programacion-en-python-para-principiantes/</link>
                <guid isPermaLink="false">6443fe352ef44808032fa1a2</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Luis Gabriel Sierra Gutierrez ]]>
                </dc:creator>
                <pubDate>Sat, 29 Apr 2023 02:18:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/04/chris-ried-ieic5Tq8YMk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/the-best-way-to-learn-python-python-programming-tutorial-for-beginners/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Best Way to Learn Python – Python Programming Tutorial for Beginners</a>
      </p><p>Python es un gran lenguaje de programación para aprender y que puedes usar en una variedad de áreas en desarrollo de software. &nbsp;Tú puedes usar Python para desarrollo de páginas web, análisis de datos, aprendizaje automático, inteligencia artificial y más. </p><p>Con la enorme cantidad de recursos para escoger, a veces es difícil saber cuál es la mejor opción.</p><p>Yo he organizado una lista de 16 tutoriales de Python para principiantes. &nbsp;Esta lista incluye recursos gratuitos y de paga.</p><p>Aquí está la lista completa. &nbsp;Una vez que encuentres el recurso que te interesa, da clic al link y él te llevará a una descripción más detallada de dicho recurso. &nbsp;Sin más que agregar, los recursos son gratuitos.</p><h2 id="los-mejores-tutoriales-de-python-para-principiantes"><strong>Los mejores tutoriales de Python para principiantes</strong></h2><ol><li><a href="#primero">Aprende Python - Curso completo para principiantes (freeCodeCamp)</a></li><li><a href="#segundo">El manual de Python (Flavio Copes)</a></li><li><a href="#tercero">Tutoriales de Python para Completos Principiantes (CS Dojo)</a></li><li><a href="#cuarto">Programación para Todos (Iniciándote con Python)(Universidad de Michigan)</a></li><li><a href="#quinto">Estudia esta Noche (studytonight.com/python/)</a></li><li><a href="#sexto">Nucleo de Python (SoloLearn)</a></li><li><a href="#septimo">Python Real (realpython.com)</a></li><li><a href="#octavo">Python Básico con Sam (freeCodeCamp) </a></li><li><a href="#noveno">Tutoriales para principiantes de Python (Pythonspot)</a></li><li><a href="#decimo">Tutorial de Python(Python para Principiantes)</a></li><li><a href="#undecimo">Automatiza las cosas aburridas con Python (Libro Online)</a></li><li><a href="#duodecimo">Aprende Python 2 (Codecademy)</a></li><li><a href="#decimotercero">Aprende Python, el camino difícil (Libro)</a></li><li><a href="#decimocuarto">Curso intensivo de Python para principiantes (Traversy Media)</a></li><li><a href="#decimoquinto">Tutorial de Python - Python para principiantes (Programando con Mosh)</a></li><li><a href="#decimosexto">Computación científica con Python (freeCodeCamp)</a></li></ol><p>Nota del traductor: Todos los recursos están originalmente en inglés.</p><!--kg-card-begin: html--><h2 id="primero">Aprende Python: Curso completo para principiantes</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-12.32.54-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-12.32.54-AM" width="600" height="400" loading="lazy"></figure><p>En este curso en <a href="https://www.youtube.com/watch?v=rfscVS0vtbw">Youtube de freeCodeCamp</a>, aprenderás programación básica como lo son listas, condicionales, cadenas, tuplas, funciones, clases y más.</p><p>También podrás construir pequeños proyectos como una calculadora básica, juego de mad libs, una aplicación para de traducción y un juego de adivinanzas. </p><!--kg-card-begin: html--><h2 id="segundo">El Manual de Python</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-12.32.41-PM.png" class="kg-image" alt="Screen-Shot-2021-08-10-at-12.32.41-PM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.freecodecamp.org/news/the-python-handbook/">artículo de Flavio Copes</a> aprenderás acerca de cadenas, listas, tuplas, recursión y más.</p><p>También aprenderás como instalar paquetes de terceros y como trabajar con ambientes virtuales.</p><!--kg-card-begin: html--><h2 id="tercero">Tutoriales de Python para Completos Principiantes por CS Dojo</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-12.42.24-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-12.42.24-AM" width="600" height="400" loading="lazy"></figure><p>En esta <a href="https://www.youtube.com/playlist?list=PLBZBJbE_rGRWeh5mIBhD-hhDwSEDxogDg">serie de videos de Youtube para principiantes</a> en Python por CS Dojo, aprenderás acerca de diccionarios, ciclos, funciones, objetos y más.</p><p>También aprenderás a <a href="https://www.youtube.com/watch?v=W0wWwglE1Vc&amp;list=PLBZBJbE_rGRWeh5mIBhD-hhDwSEDxogDg&amp;index=16">construir una automatización para Twitter usando Python.</a></p><!--kg-card-begin: html--><h2 id="cuarto">Programación para Todos (Iniciándote con Python)</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-4.13.09-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-4.13.09-AM" width="600" height="400" loading="lazy"></figure><p>En este curso de la <a href="https://www.freecodecamp.org/news/python-for-everybody/">Universidad de Michigan</a> aprenderás acerca de funciones, ciclos, condicionales, variables y más del famoso "Dr. Chuck".</p><p>Una vez hayas aprendido lo básico, puedes continuar con el resto de la <a href="https://www.coursera.org/specializations/python">especialización </a>y tomar el <a href="https://www.coursera.org/learn/python-data?specialization=python">Curso de Estructuras de Datos en Python</a>, el <a href="https://www.coursera.org/learn/python-network-data?specialization=python">Curso de Acceso a Datos de Internet con Python</a> y el <a href="https://www.coursera.org/learn/python-databases?specialization=python">Curso de Uso de Bases de Datos con Python.</a></p><!--kg-card-begin: html--><h2 id="quinto">Estudia esta Noche</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-1.57.39-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-1.57.39-AM" width="600" height="400" loading="lazy"></figure><p>En <a href="https://www.studytonight.com/python/">Estudia esta Noche</a>, podrás aprender acerca de Python básico, manejo de errores, POO (Programación Orientada a Objetos), manejo de archivos, tipos de datos complejos, hilos múltiples y más.</p><p>Una vez hayas aprendido lo básico, puedes moverte dentro de otros módulos incluidos como la <a href="https://www.studytonight.com/numpy">libreria NumPy</a>, <a href="https://www.studytonight.com/matplotlib">Matplotlib</a>, <a href="https://www.studytonight.com/tkinter">Tkinter</a>, <a href="https://www.studytonight.com/network-programming-in-python/">Programación de Redes en Python</a> y <a href="https://www.studytonight.com/python/web-scraping/">Raspado de páginas de internet usando Beautiful Soup</a>.</p><!--kg-card-begin: html--><h2 id="sexto">Nucleo de Python</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-4.07.33-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-4.07.33-AM" width="600" height="400" loading="lazy"></figure><p>En el <a href="https://www.sololearn.com/learning/1073">Curso de Python de Sololearn</a> aprenderás acerca de cadenas, variables, Programación Orientada a Objetos, programación funcional y más. &nbsp;Está lleno de evaluaciones cortas, retos y proyectos que puedes ir construyendo a lo largo del camino. </p><p>Para poder empezar necesitarás crear una cuenta gratuita.</p><!--kg-card-begin: html--><h2 id="septimo">Python Real</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-1.33.04-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-1.33.04-AM" width="600" height="400" loading="lazy"></figure><p><a href="https://realpython.com/">Los tutoriales de Python Real</a> proveen una variedad de recursos para ayudar a tu aprendizaje de Python por medio de artículos, videos, proyectos y pequeñas evaluaciones. &nbsp;Puedes empezar con los <a href="https://realpython.com/search?level=basics&amp;q=basics">cursos básicos</a> en tipos de datos, ciclos, funciones, cadenas y estructuras de datos.</p><p>Tu puedes moverte dentro de una extensa lista de <a href="https://realpython.com/search?level=basics&amp;q=projects">proyectos</a> que incluye la construcción de un diario personal, una aplicación de portafolio y un servicio de notificación de precios del Bitcoin<a href="https://realpython.com/search?level=basics&amp;q=projects">.</a></p><p>Para poder acceder a todo el contenido tendrás que convertirte en <a href="https://realpython.com/account/join/">suscriptor</a> de paga.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-1.49.59-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-1.49.59-AM" width="600" height="400" loading="lazy"></figure><!--kg-card-begin: html--><h2 id="octavo">Python Básico con Sam (freeCodeCamp)</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-7.44.02-AM.png" class="kg-image" alt="Screen-Shot-2021-08-10-at-7.44.02-AM" width="600" height="400" loading="lazy"></figure><p><a href="https://www.youtube.com/playlist?list=PLWKjhJtqVAbkmRvnFmOd4KhDdlK1oIq23">En esta serie de Youtube de Sam Focht</a>, podrás aprender acerca de ciclos, funciones, cadenas, recursión y más.</p><p>También podrás construir algunos proyectos, incluyendo un juego de adivinanzas, listas de compras, un juego de mesa y un generador de contraseñas aleatorio.</p><!--kg-card-begin: html--><h2 id="noveno">Tutoriales para Principiantes de Python</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-3.22.24-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-3.22.24-AM" width="600" height="400" loading="lazy"></figure><p>En esta <a href="https://pythonspot.com/beginner/">serie de tutoriales para principiantes de Python</a>, aprenderás acerca de tipos de datos, tuplas, objetos, clases, diccionarios y más. &nbsp;También aprenderás acerca de conceptos avanzados como recursión, lambdas y enhebrado.</p><p>Una vez que cubras lo básico, puedes moverte al módulo de <a href="https://pythonspot.com/machine-learning/">aprendizaje automático</a>, <a href="https://pythonspot.com/python-database/">bases de datos</a> e <a href="https://pythonspot.com/gui/">interfaces gráficas de usuario</a>.</p><!--kg-card-begin: html--><h2 id="decimo">Tutorial de Python</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-3.31.29-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-3.31.29-AM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.pythonforbeginners.com/python-tutorial">tutorial de Python para principiantes</a>, aprenderás acerca de funciones, ciclos, listas, condicionales, manejo de errores y más.</p><p>Una vez aprendas lo básico, puedes explorar los otros módulos del sitio, incluyendo <a href="https://www.pythonforbeginners.com/python-on-the-web/web-scraping-with-beautifulsoup">raspado de páginas en internet con BeautifulSoup</a> y <a href="https://www.pythonforbeginners.com/api/using-the-youtube-api">usando la interfaz de Youtube de programación de aplicaciones en Python.</a></p><!--kg-card-begin: html--><h2 id="undecimo">Automatiza las cosas aburridas con Python</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-2.30.07-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-2.30.07-AM" width="600" height="400" loading="lazy"></figure><p>En el libro en línea <a href="https://automatetheboringstuff.com/">Automatiza las cosas aburridas con Python</a>, aprenderás acerca de diccionarios, cadenas, depuración, expresiones regulares y más.</p><p>Si prefieres el formato en video, puedes ir a la <a href="https://www.youtube.com/watch?v=1F_OgqRuSdI&amp;list=PL0-84-yl1fUnRuXGFe_F7qSH1LEnn9LkW">serie de Youtube</a> que Al Sweigart ha posteado sobre este libro.</p><!--kg-card-begin: html--><h2 id="duodecimo">Aprende Python 2</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-2.43.41-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-2.43.41-AM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.codecademy.com/learn/learn-python">curso de CodeAcademy</a> aprenderás sobre sintaxis básica, cadenas, funciones, listas, condicionales y más. &nbsp;Este curso también cubrirá temas más avanzados como segmentación de listas y expresiones lambda.</p><p>Para tomar este curso necesitarás crear una cuenta.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-2.47.24-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-2.47.24-AM" width="600" height="400" loading="lazy"></figure><!--kg-card-begin: html--><h2 id="decimotercero">Aprende Python, el camino difícil</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-2.53.57-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-2.53.57-AM" width="600" height="400" loading="lazy"></figure><p>En <a href="https://shop.learncodethehardway.org/access/buy/2/">aprende Python 2, el camino dificil</a>, aprenderás acerca de variables, condicionales, funciones, clases, objetos y más. &nbsp;También aprenderás como construir un sitio en internet y un juego.</p><p>Asimismo, tienes la opción de hacer la versión actualizada del libro, la cual se llama <a href="https://shop.learncodethehardway.org/access/buy/9/">Python 3, el camino difícil</a>. &nbsp;Estos dos libros solamente están en la opción de pago.</p><!--kg-card-begin: html--><h2 id="decimocuarto">Curso intensivo de Python para principiantes</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-8.58.23-AM.png" class="kg-image" alt="Screen-Shot-2021-08-10-at-8.58.23-AM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.youtube.com/watch?v=JJmcL1N2KQs">curso de Brad Traversy en Youtube</a>, aprenderás acerca de listas, tuplas, diccionarios, funciones, clases, y más. &nbsp;Brad también te enseñará como trabajar con archivos y datos en JSON.</p><!--kg-card-begin: html--><h2 id="decimoquinto">Tutorial de Python - Python para principiantes</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-06-at-12.06.56-AM.png" class="kg-image" alt="Screen-Shot-2021-08-06-at-12.06.56-AM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.youtube.com/watch?v=_uQrJ0TkZlc">curso de programación en Youtube con Mosh</a>, aprenderás programación básica como variables, ciclos, cadenas, tuplas, funciones, clases y más.</p><p>También podrás construir tres proyectos: uno en automatización, uno en aprendizaje automático y finalmente uno en construcción de una página en internet con Django.</p><p>Si deseas una práctica adicional, puedes ir a los <a href="https://programmingwithmosh.com/python/python-exercises-and-questions-for-beginners/">53 ejercicios de Python para principiantes de Mosh</a>.</p><!--kg-card-begin: html--><h2 id="decimosexto">Computación científica con Python.</h2><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-9.06.10-AM.png" class="kg-image" alt="Screen-Shot-2021-08-10-at-9.06.10-AM" width="600" height="400" loading="lazy"></figure><p>En este <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/">curso certificado de freeCodeCamp</a>, aprenderás acerca de ciclos, listas, diccionarios, gestión de redes, servicios de internet y más.</p><p>También tendrás la oportunidad de construir cinco proyectos: <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/scientific-computing-with-python-projects/arithmetic-formatter">Formateador aritmético</a>, <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/scientific-computing-with-python-projects/time-calculator">calculadora de tiempo</a>, <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/scientific-computing-with-python-projects/budget-app">aplicación de presupuesto</a>, <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/scientific-computing-with-python-projects/polygon-area-calculator">calculadora de área de polígonos</a> y <a href="https://www.freecodecamp.org/espanol/learn/scientific-computing-with-python/scientific-computing-with-python-projects/probability-calculator">calculadora de probabilidades</a>. <br></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
