Archivos y directorios de Python: explicación detallada del módulo os y el módulo shutil


os El módulo y el shutil módulo es la forma principal de tratar con el archivo / directorio de Python. El módulo os proporciona una forma conveniente de utilizar funciones relacionadas con el sistema operativo, y el módulo shutil es una herramienta avanzada de manipulación de archivos / directorios.

Procesamiento de documentos

osEl módulo proporciona algunas funciones convenientes para utilizar los recursos del sistema operativo, como leer archivos en el directorio de recursos, ver todo el contenido de los archivos en una determinada ruta en la línea de comandos, etc.

Obtener el tipo de sistema


El desarrollo de compatibilidad del código para adaptarse a diferentes sistemas operativos se puede resolver fácilmente juzgando el tipo de sistema operativo.

import os
import sys
print(os.name)  # 返回nt代表Windows,posix代表Linux
print(sys.platform)  # 更详细信息

Inserte la descripción de la imagen aquí

Obtener el entorno del sistema


Al establecer variables de entorno, a menudo se llaman módulos environ. os.environLas variables de entorno del sistema se devuelven en forma de diccionario. Para obtener valores de atributos específicos, puede utilizar índices o métodos getenv():

import os
print(os.environ)
print(os.environ['PATH'])
print(os.getenv('PATH'))

Inserte la descripción de la imagen aquí

Ejecutar comandos del sistema


system()Los comandos de shell se pueden ejecutar utilizando el método del módulo os . La ejecución normal devolverá 0. El formato utilizado es os.system("bash command").

Cuando se escribe en una que no es una consola, system()solo se llaman pero no se ejecutan los comandos del sistema, y ​​los resultados de la ejecución se pueden leer a través del objeto de popen()retorno de la función file.

import os
os.system('ping www.baidu.com')
os.popen('ping www.baidu.com').read()

Inserte la descripción de la imagen aquí

Manipular directorios y archivos


Una de las funciones más comunes del desarrollo de Python cuando se usa el módulo os para manipular directorios y archivos.

método Descripción Ejemplo
os.getcwd () Obtener la ruta del directorio actual
os.chdir ('ruta de destino') Cambiar el directorio de secuencia de comandos actual
os.listdir (ruta) Lista todos los archivos en el directorio
os.mkdir (ruta) Crea un solo directorio
os.makedirs (ruta) Crea un directorio de varios niveles
os.rmdir (ruta) Eliminar directorios vacíos de un solo nivel
os.removedirs (ruta) Eliminar directorios de varios niveles
os.rename ("nombre de archivo o directorio", "nombre de destino") Cambiar el nombre del directorio o archivo
os.path.abspath () Obtener ruta absoluta
os.path.split (ruta) Descomponer la ruta en (carpeta, nombre de archivo)
Si el último carácter de la cadena de ruta es \, solo la parte de la carpeta tiene un valor;
si no hay \ en la cadena de ruta, solo la parte del nombre del archivo tiene un valor;
si el cadena de ruta Si hay \ y ya no está al final, el nombre del archivo de la carpeta tiene un valor.
os.path.join (ruta1, ruta2) Combinar caminos
os.path.dirname (ruta) Obtenga la parte de la carpeta en la ruta
os.path.basename (ruta) Obtenga el nombre del archivo en la ruta
os.path.exists (ruta) Determine si el archivo o la carpeta existe
os.path.isfile (ruta) Determine si la ruta es un archivo
os.path.isdir (ruta) Determine si la ruta es un directorio
os.path.getsize (ruta) Obtener el tamaño de archivo o carpeta
os.path.getctime (ruta) Obtener la hora de creación del archivo o carpeta
os.path.getatime (ruta) Obtener la última hora de acceso a un archivo o carpeta
os.path.getmtime (ruta) Obtener la última hora de modificación de un archivo o carpeta
os.sep () Separador de ruta
os.extsep () Separador entre nombre de archivo y sufijo
os.pathsep () Separador de ruta
os.linesep () Salto de línea

( Información intersticial anti-escalada ) Dirección CSDN de Blogger: https://wzlodq.blog.csdn.net/

Procesamiento avanzado de archivos y directorios

En comparación con el osmódulo, el shutilmódulo se utiliza para el procesamiento avanzado de archivos y directorios, y proporciona funciones como la asignación de archivos de apoyo, movimiento, eliminación, compresión y descompresión.

Copiar archivos


shutilLa función principal del módulo es el archivo de asignación y hay alrededor de siete implementaciones:

  1. shutil.copyfileobj(file1,file2)Sobrescribir copia
    Sobrescribir archivo2 con el contenido de archivo1, archivo1 y archivo2 representan objetos de archivo abiertos.

  2. shutil.copyfile(file1,file2)Sobrescribir y copiar
    también es sobrescribir, pero sin abrir el archivo, se sobrescribe directamente con el nombre del archivo (el código fuente todavía se llama copyfileobj).

  3. shutil.copymode(file1,file2)Copia de permisos
    Solo se copian los permisos del archivo, el contenido del archivo, los grupos y los usuarios no se cambian y no se devuelven objetos.

  4. shutil.copystart(file1,file2)Copia de estado Copia
    toda la información de estado del archivo, incluidos los permisos, los grupos, los usuarios y la hora, sin devolver los objetos.

  5. shutil.copy(file1,file2)Contenido y permisos de copia
    copiar el contenido y los permisos de un archivo es equivalente a ejecutar copyfile primero y luego copysmode.

  6. shutil.copy2(file1,file2)
    Copia de contenido y permisos Copiar el contenido y toda la información de estado del archivo equivale a ejecutar primero el copyfile y luego el copystart.

  7. shutil.copytree()Copia recursiva Copia
    recursiva el contenido del archivo y la información de estado

Mover archivos


Utilice funciones shutil.move()para mover archivos o renombrarlos de forma recursiva y volver al destino. Si el destino es un directorio existente, src se mueve al directorio actual; si el destino ya existe y no es un directorio, puede sobrescribirse.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Leer y archivar archivos comprimidos


Utilice la función para shutil.make_archive()crear un archivo de almacenamiento y devolver el nombre del archivo.
La sintaxis es la siguiente:
shutil.make_archive(base_name,format[,root_dir[,base_dir[,verbose[,dry_run[,owner[,group[,logger]]]]]]])

  • base_name es el nombre del archivo que se creará, incluida la ruta
  • formato significa que se puede seleccionar el formato de compresión, zip, tar o bztar
  • root_dir es el directorio de archivo
import shutil
path_1 = r'D:\PycharmProjects\Hello'
path_2 = r'D:\PycharmProjects\Hello\shutil-test'
new_path = shutil.make_archive(path_2,'zip',path_1)
print(new_path)

Inserte la descripción de la imagen aquí

descomprimir archivos


Utilice la función para shutil.unpack_archive(filename[,extract_dir[,format]])analizar el desembalaje.

  • nombre de archivo es la ruta completa del archivo
  • extract_dir es el nombre del directorio de destino para extraer el archivo
  • formato es el formato del archivo descomprimido
import shutil
import os
shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\\testdir')
print(os.listdir('D:\\testdir'))

Inserte la descripción de la imagen aquí

resumen


Cabe señalar que en diferentes sistemas operativos, los separadores de ruta son diferentes y deben tenerse en cuenta al procesar archivos. También se puede usar os.sep()para reemplazar el separador de archivos, debido a la excepción del programa causada por el sistema operativo. Además, al manejar archivos, a menudo debe prestar atención a los permisos de los archivos, así como a la diferencia entre archivos y carpetas, y al uso de la recursividad.

El blog de la serie Python se actualiza continuamente

El original no es fácil, por favor no reimprima ( esto no es peor para visitas adineradas ) la
página de inicio del blogger: https://wzlodq.blog.csdn.net/WeChat cuenta
pública: si el artículo es útil para usted, recuerde hacer clic en tres enlaces ❤唔仄lo咚锵

Supongo que te gusta

Origin blog.csdn.net/qq_45034708/article/details/114116057
Recomendado
Clasificación