Módulo de cierre en Python

Módulo de cierre en Python
La gestión de archivos y el manejo de los objetos de archivos se consideran una de las tareas más difíciles en todos los lenguajes de programación. Algunos lenguajes de programación nos proporcionan algunas herramientas que abstraen las partes difíciles del manejo de archivos con funciones e interfaces fáciles de usar. Esto es exactamente lo que Python's callar El módulo también lo hace.

Python saltil

El módulo Python Shutil permite a un desarrollador usar objetos de archivo muy fácilmente y sin entrar en detalles más profundos sobre cómo funcionan las cosas debajo de las cubiertas. Este módulo básicamente abstrae la semántica de bajo nivel de la creación y administración de objetos de archivo, limpiarlos una vez que el uso esté completo y nos permite centrarnos en la lógica comercial de la aplicación. Veremos muchos ejemplos aquí, comencemos.

Ejemplos con el módulo de cierre de Python

Estudiaremos varios ejemplos que demuestran el uso de Python callar módulo aquí.

Copiar un archivo

Con el copiar archivo() función en callar Módulo, podemos hacer una copia exacta de un archivo existente en cualquier lugar de la máquina. Veamos un programa de muestra para demostrar cómo se puede hacer esto:

importar sistema operativo
callar de importación
file_directory = './Archivos '
imprimir ('archivos antes:', OS.listDir (file_directory))
callar.copiar archivo('./Archivos/hola.TXT', './Archivos/hello_again.TXT')
imprimir ('archivos después:', OS.listDir (file_directory))

Acabamos de copiar un archivo que existe en el directorio dado para clonar el archivo en el mismo directorio. Esto es lo que recuperamos con este comando:

Copia del archivo de callar de Python

Lo bueno de esta función es que la función mencionada también toma como entrada el nombre al nuevo archivo que se creará.

Copiar archivos a otro directorio

Es posible copiar un archivo a un nuevo directorio con shutil's Copiar() función. Veamoslo en acción:

importar sistema operativo
callar de importación
Imprimir ('Hacer un nuevo directorio.')
sistema operativo.Mkdir ('Linuxhint')
imprimir ('archivos antes:', OS.ListDir ('Linuxhint'))
callar.Copiar('./Archivos/hola.txt ',' linuxhint ')
imprimir ('archivos después:', OS.ListDir ('Linuxhint'))

Veamos la salida para este comando:

Copiar archivo a un nuevo directorio

Tenga en cuenta que cuando se copia un archivo usando el Copiar() función, Los permisos para el archivo también están clonados Pero los metadatos del archivo no se copian. Esto significa que cuando verifica cuándo se hizo este archivo, mostrará el tiempo fresco cuando ejecute este script.

Copiar archivo con metadatos

En la última sección, vimos cómo podríamos hacer una copia del archivo. ¿Qué pasa si desea hacer un clon exacto de un archivo que implique clonar sus metadatos, como cuándo se hizo el archivo, etc. Esto también es posible pero esto Puede que no funcione en un sistema basado en POSIX. Veamos un ejemplo sobre cómo se puede hacer esto:

importar sistema operativo
callar de importación
tiempo de importación
new_directory = 'Linuxhint'
src_file = './Archivos/hola.TXT'
dest_file = './Linuxhint/Hola.TXT'
Def file_metadata (archivo):
stat_info = OS.STAT (archivo)
imprimir ('Modo:', OCT (stat_info.st_mode))
imprimir ('creado:', tiempo.ctime (stat_info.ST_CTIME))
Imprimir ('Accedido:', Tiempo.ctime (stat_info.st_atime))
imprimir ('modificado:', tiempo.ctime (stat_info.st_mtime))
sistema operativo.mkdir (new_directory)
imprimir ('metadatos para el archivo fuente:')
file_metadata (src_file)
callar.Copy2 (src_file, new_directory)
imprimir ('metadatos para el archivo de destino:')
file_metadata (dest_file)

Esto es lo que recuperamos con este comando cuando ejecutamos esto en un sistema basado en POSIX (los metadatos no están clonados por completo):

Copiar archivo con metadatos

En los sistemas no basados ​​en Posix, incluso el tiempo creado y el que se accede habría coincidido exactamente.

Directorio completo de clonación

En la última sección, vimos cómo podríamos hacer una copia del archivo. Aquí, veremos cómo podemos clonar un directorio completo recursivamente. Esto significa que si existe otro directorio en el directorio que queremos clonar, también se clonarán.

Importar PPRint
callar de importación
importar sistema operativo
src_directory = './Archivos '
des_directory = './Linuxhint '
callar.Copytree (src_directory, dest_directory)
Imprimir ('Contenido de la fuente:')
piprint.PPRINT (OS.ListDir (src_directory))
Imprimir ('Contenido del destino:')
piprint.PPRINT (OS.listDir (dest_directory))

Veamos la salida para este comando:

Duplicando un directorio

Tenga en cuenta que el directorio que pasamos a la función copytree () como El directorio de destino no debe existir antes de ejecutar este programa.

Eliminar un directorio

Eliminar un directorio es muy simple con el rmtree () función en el módulo. Veamos esta función en acción aquí:

Importar PPRint
callar de importación
importar sistema operativo
delete_directory = 'Linuxhint'
current_directory = '.'
Imprimir ('Contenido antes de la eliminación:')
piprint.PPRINT (OS.listDir (current_directory))
callar.rmtree (delete_directory)
Imprimir ('Contenido después de la eliminación:')
piprint.PPRINT (OS.listDir (current_directory))

Después de ejecutar el script, Linuxhint El directorio se elimina junto con el contenido. Esto es lo que recuperamos con este comando:

Eliminar directorio

Encontrar archivos

Si desea encontrar un archivo que esté presente en la variable de ruta en su máquina, podemos usar el cual() función para encontrar ese archivo por nombre. Veamos un ejemplo de demostración para esta función:

callar de importación
imprimir (callar.que ('bsondump'))
imprimir (callar.que ('sin fila')))

Esto es lo que recuperamos con este comando:

Buscar archivo en ruta

Monitoreo del espacio del sistema de archivos

Con el módulo de cierre, tenemos una función disk_usage () a través de la cual también podemos obtener información de espacio en disco sobre nuestra máquina. Veamos un ejemplo que muestra estos datos de manera legible por humanos:

callar de importación
Total_b, used_b, free_b = shutil.uso del disco('.')
gb = 10 ** 9 # gb == gigabyte
print ('Total: : 6.2f GB '.formato (total_b / gb))
print ('usado: : 6.2f GB '.formato (usado_b / gb))
imprimir ('gratis: : 6.2f GB '.formato (libre_b / gb))

Esto es lo que recuperamos con este comando:

Encontrar espacio del sistema de archivos

Directorios de archivo

Como último ejemplo, veremos cómo podemos archivar un módulo de cierre de directorio make_archive () función. Veamos el programa de muestra:

callar de importación
importar sistema operativo
Archive_Directory = \
sistema operativo.camino.Expanduser (OS.camino.unirse ('Destino-directorio-patas', 'Linuxhint'))
root_dir = OS.camino.Expanduser (OS.camino.Únete a ('~', '.ssh '))
callar.make_archive (archive_directory, 'gztar', root_dir)

Esto es lo que recuperamos con este comando:

Directorio de archivo

Si desarchive el archivo de alquitrán y se mira, contendrá todo el .ssh archivos de directorio en él.

Conclusión

En esta lección, observamos cómo podemos administrar objetos de archivo con operaciones de archivos de alto nivel fácilmente con callar Módulo en Python. Operaciones como copiar el contenido de un archivo, crear una nueva copia de un archivo, etc. Parecía fácil con este módulo.