Gestión de directorios de Python

Los directorios son una forma de almacenar, organizar y separar los archivos en una computadora. El directorio que no tiene un padre se llama directorio raíz . La forma de llegar al archivo se llama ruta . La ruta contiene una combinación de nombres de directorios, nombres de carpetas separados por barras y dos puntos y esto da la ruta a un archivo en el sistema.

Gestión de directorios usando Python

Python contiene varios módulos que tienen una serie de funciones integradas para manipular y procesar datos. Python también ha proporcionado módulos que nos ayudan a interactuar con el sistema operativo y los archivos. Este tipo de módulos también se pueden utilizar para la gestión de directorios. Los módulos que proporcionan las funcionalidades se enumeran a continuación:

  • os y os.path
  • archivocmp
  • archivo temporal
  • cerrar

módulo os y os.path

El módulo os se usa para manejar archivos y directorios de varias maneras. Proporciona disposiciones para crear/renombrar/borrar directorios. Esto permite incluso conocer el directorio de trabajo actual y cambiarlo a otro. También permite copiar archivos de un directorio a otro. A continuación se explican los principales métodos utilizados para la gestión de directorios.

Creando nuevo directorio:

  • método os.mkdir(nombre) para crear un nuevo directorio.
  • El nombre deseado para el nuevo directorio se pasa como parámetro.
  • Por defecto crea el nuevo directorio en el directorio de trabajo actual.
  • Si el nuevo directorio debe crearse en otro lugar, entonces esa ruta debe especificarse y la ruta debe contener barras diagonales en lugar de barras invertidas.

Python3

import os
 
# creates in current working directory
os.mkdir('new_dir') 
 
# creates in D:\
os.mkdir('D:/new_dir') 

Obtener el directorio de trabajo actual (CWD):

  • Se puede usar os.getcwd() .
  • Devuelve una string que representa la ruta del directorio de trabajo actual.
  • os.getcwdb() también se puede usar, pero devuelve una string de bytes que representa el directorio de trabajo actual.
  • Ambos métodos no requieren que se pase ningún parámetro.

Python3

import os
 
print("String format :", os.getcwd())
print("Byte string format :", os.getcwdb())

Producción:

String format : /home/nikhil/Desktop/gfg
Byte string format : b'/home/nikhil/Desktop/gfg'

Cambiar el nombre de un directorio:

  • El método os.rename() se usa para cambiar el nombre del directorio.
  • Los parámetros pasados ​​son old_name seguido de new_name.
  • Si ya existe un directorio con el nombre nuevo pasado, se generará OSError en el caso de Unix y Windows.
  • Si ya existe un archivo con el nuevo_nombre, en Unix no surge ningún error, se renombrará el directorio. Pero en Windows, el cambio de nombre no ocurrirá y se generará un error.
  • El método os.renames(‘old_name’,’dest_dir:/new_name’) funciona de manera similar a os.rename() pero mueve el archivo renombrado al directorio de destino especificado (dest_dir).

Por ejemplo, considere que hay un archivo llamado ‘file1.txt’ en el directorio de trabajo actual. Ahora solo para cambiarle el nombre:

Python3

import os
 
os.rename('file1.txt','file1_renamed.txt')

Si se requiere cambiar el nombre y mover el archivo a otro directorio, entonces el fragmento de código debe ser:

Python3

import os
 
os.renames('file1.txt', 'D:/file1_renamed.txt')

Cambiar el directorio de trabajo actual (CWD):

  • Cada proceso en el sistema informático tendrá un directorio asociado, que se conoce como Directorio de trabajo actual (CWD).
  • El método os.chdir() se usa para cambiarlo.
  • El parámetro pasado es la ruta/nombre del directorio deseado al que se desea cambiar.

Ejemplo de formulario, si necesitamos cambiar el CWD a my_folder en D:/, entonces se usa el siguiente fragmento de código.

Python3

import os
 
print("Current directory :", os.getcwd())
 
# Changing directory
os.chdir('/home/nikhil/Desktop/')
print("Current directory :", os.getcwd())

Producción:

Current directory : /home/nikhil/Desktop/gfg
Current directory : /home/nikhil/Desktop

Listado de archivos en un directorio

  • Un directorio puede contener subdirectorios y varios archivos en él. Para enumerarlos, se utiliza el método os.listdir() .
  • O no toma ningún parámetro o un parámetro.
  • Si no se pasa ningún parámetro, se enumeran los archivos y subdirectorios del CWD.
  • Si se requiere que se enumeren archivos de cualquier otro directorio que no sea el CWD, entonces el nombre/ruta de ese directorio se pasa como parámetro.

Por ejemplo: enumerar los archivos en CWD- GeeksforGeeks (directorio raíz)

Python3

import os
 
print("The files in CWD are :",os.listdir(os.getcwd()))

Producción:

Los archivos en CWD son: [‘carpeta del sitio’, ‘.directorio’, ‘proxy.txt’, ‘poema python.txt’, ‘barra izquierda’, ‘imágenes’, ‘¡Bienvenido a GeeksforGeeks!\nPublicaciones Agregar Ne.txt ‘, ‘trash.desktop’, ‘gfg.py’, ‘Lo siento, no puede actualizar el núcleo para algunos tim.txt’, ‘gfgNikhil Aggarwal.png’, ‘0001.jpg’, ‘gfg’, ‘gfgcerti.png ‘, ‘raju’, ‘imágenes grandes’]

Eliminar un directorio

  • El método os.rmdir() se usa para eliminar/eliminar un directorio.
  • El parámetro pasado es la ruta a ese directorio.
  • Elimina el directorio si y solo si está vacío; de lo contrario, genera un OSError.

Por ejemplo, consideremos un directorio K:/files. Ahora, para eliminarlo, uno debe asegurarse de que esté vacío y luego proceder a eliminarlo.

Python3

import os
 
dir_li=os.listdir('k:/files')
 
if len(dir_li)==0:
  print("Error!! Directory not empty!!")
else:
  os.rmdir('k:/files')

Para comprobar si es un directorio:

  • Dado un nombre de directorio o ruta, os.path.isdir(ruta) se usa para validar si la ruta es un directorio válido o no.
  • Solo devuelve valores booleanos. Devuelve verdadero si la ruta dada es un directorio válido; de lo contrario, es falso .

Python3

import os
 
# current working directory of
# GeeksforGeeks
cwd='/'
print(os.path.isdir(cwd))
 
# Some other directory
other='K:/'
print(os.path.isdir(other))
Producción

True
False

Para obtener el tamaño del directorio:

  • os.path.getsize(path_name) proporciona el tamaño del directorio en bytes.
  • Se genera OSError si se pasa una ruta no válida como parámetro.

Python3

import os
 
print(os.path.getsize(os.getcwd()))
Producción

4096

Obtener tiempos de acceso y modificación:

  • Para obtener la última vez que se accedió a un directorio: os.path.getatime (ruta)
  • Para obtener la última hora de modificación del directorio: os.path.getmtime (ruta)
  • Estos métodos devuelven el número de segundos desde la época. Para formatearlo, se puede usar la función strftime() del módulo datetime.

Ejemplo: Obtener el tiempo de acceso y modificación del directorio GeeksforGeeks (raíz)

Python3

import os
import datetime as dt
 
print("Before conversion :")
 
# returns seconds since epoch
print("last access time :",os.path.getatime(os.getcwd()))
print("last modification time :",os.path.getmtime(os.getcwd()))
 
print("After conversion :")
 
# formatting the return value
access_time=dt.datetime.fromtimestamp(os.path.getatime(os.getcwd())).strftime('%Y-%m-%d %I:%M %p')
modification_time=dt.datetime.fromtimestamp(os.path.getmtime(os.getcwd())).strftime('%Y-%m-%d %I:%M %p')
 
print("last access time :",access_time)
print("last modification time :",modification_time)
Producción

Before conversion :
last access time : 1596897099.56
last modification time : 1596897099.56
After conversion :
last access time : 2020-08-08 02:31 PM
last modification time : 2020-08-08 02:31 PM

 

módulo filecmp

Este módulo proporciona varias funciones para realizar la comparación entre archivos y directorios. Para comparar los directorios, se debe crear un objeto para la clase filecmp.dircmp que describa qué archivos ignorar y qué archivos ocultar de las funciones de esta clase. El constructor debe invocarse antes de llamar a cualquiera de las funciones de esta clase. El constructor se puede invocar como se indica a continuación:

d = archivocmp. dircmp(dir_1, dir_2, ignorar=[a,b,c]/Ninguno, ocultar=[d,e,f]/Ninguno)

Funciones para comparar directorios:

  1. d.report() : compara los dos directorios proporcionados al invocar al constructor y presenta un resumen de la lista de archivos en ambos directorios. En caso de que se encuentren archivos idénticos, también se enumeran. Los subdirectorios comunes también se imprimen en la salida.

Python3

import filecmp as fc
import os
 
dir_1 = dir_2 = os.getcwd()
 
# creating object and invoking constructor
d = fc.dircmp(dir_1, dir_2, ignore=None, hide=None)
 
print("comparison 1 :")
d.report()
Producción

comparison 1 :
diff / /
Common subdirectories : ['bin', 'boot', 'dev', 'etc', 'home', 'lib', 'lib64', 'media', 'mnt', 'opt', 'proc', 'run', 'sbin', 'srv', 'sys', 'tmp', 'usr', 'var']

       2. d.report_partial_closure() :  Imprime la comparación entre los directorios pasados ​​y también las comparaciones entre los subdirectorios comunes inmediatos.

Python3

import filecmp as fc
import os
 
dir_1 = dir_2 = os.getcwd()
 
# creating object and invoking constructor
d = fc.dircmp(dir_1, dir_2, ignore=None, hide=None)
 
print("comparison 2 :")
d.report_partial_closure()
Producción

comparison 2 :
diff / /
Common subdirectories : ['bin', 'boot', 'dev', 'etc', 'home', 'lib', 'lib64', 'media', 'mnt', 'opt', 'proc', 'run', 'sbin', 'srv', 'sys', 'tmp', 'usr', 'var']

diff /bin /bin
Identical files : ['bash', 'btrfs', 'btrfs-calc-size', 'btrfs-convert', 'btrfs-debug-tree', 'btrfs-find-root', 'btrfs-image', 'btrfs-map-logical', 'btrfs-select-super', 'btrfs-show-super', 'btrfs-zero-log', 'btrfsck', 'btrfstune', 'bunzip2', 'busybox', 'bzcat', 'bzcmp', 'bzdiff', 'bzegrep', 'bzexe', 'bzfgrep', 'bzgrep', 'bzip2', 'bzip2recover', 'bzless', 'bzmore', 'cat', 'chacl', 'chgrp', 'chmod', 'chown', 'chvt', 'cp', 'cpio', 'dash', 'date', 'dd', 'df', 'dir', 'dmesg', 'dnsdomainname', 'domainname', 'dumpkeys', 'echo', 'ed', 'egrep', 'false', 'fgconsole', 'fgrep', 'findmnt', 'fsck.btrfs', 'fuser', 'fusermount', 'getfacl', 'grep', 'gunzip', 'gzexe', 'gzip', 'hostname', 'ip', 'journalctl', 'kbd_mode', 'kill', 'kmod', 'less', 'lessecho', 'lessfile', 'lesskey', 'lesspipe', 'ln', 'loadkeys', 'login', 'loginctl', 'lowntfs-3g', 'ls', 'lsblk', 'lsmod', 'mkdir', 'mkfs.btrfs', 'mknod', 'mktemp', 'more', 'mount', 'mountpoint', 'mt', 'mt-gnu', 'mv', 'nano', 'nc', 'nc.openbsd', 'netcat', 'netstat', 'networkctl', 'nisdomainname', 'ntfs-3g', 'ntfs-3g.probe', 'ntfs-3g.secaudit', 'ntfs-3g.usermap', 'ntfscat', 'ntfscluster', 'ntfscmp', 'ntfsfallocate', 'ntfsfix', 'ntfsinfo', 'ntfsls', 'ntfsmove', 'ntfstruncate', 'ntfswipe', 'open', 'openvt', 'pidof', 'ping', 'ping6', 'plymouth', 'ps', 'pwd', 'rbash', 'readlink', 'red', 'rm', 'rmdir', 'rnano', 'run-parts', 'sed', 'setfacl', 'setfont', 'setupcon', 'sh', 'sh.distrib', 'sleep', 'ss', 'static-sh', 'stty', 'su', 'sync', 'systemctl', 'systemd', 'systemd-ask-password', 'systemd-escape', 'systemd-hwdb', 'systemd-inhibit', 'systemd-machine-id-setup', 'systemd-notify', 'systemd-tmpfiles', 'systemd-tty-ask-password-agent', 'tailf', 'tar', 'tempfile', 'touch', 'true', 'udevadm', 'ulockmgr_server', 'umount', 'uname', 'uncompress', 'unicode_start', 'vdir', 'wdctl', 'which', 'whiptail', 'ypdomainname', 'zcat', 'zcmp', 'zdiff', 'zegrep', 'zfgrep', 'zforce', 'zgrep', 'zless', 'zmore', 'znew']

diff /boot /boot
Common subdirectories : ['grub']

diff /dev /dev
Identical files : ['console', 'core', 'full', 'fuse', 'null', 'ptmx', 'random', 'stderr', 'stdout', 'tty', 'urandom', 'zero']
Common subdirectories : ['.lxd-mounts', 'fd', 'hugepages', 'lxd', 'mqueue', 'net', 'pts', 'shm']
Common funny cases : ['initctl', 'log', 'stdin']

diff /etc /etc
Identical files : ['.pwd.lock', 'adduser.conf', 'at.deny', 'bash.bashrc', 'bash_completion', 'bindresvport.blacklist', 'ca-certificates.conf', 'ca-certificates.conf.dpkg-old', 'crontab', 'crypttab', 'debconf.conf', 'debian_version', 'deluser.conf', 'ec2_version', 'environment', 'fstab', 'fuse.conf', 'gai.conf', 'group', 'group-', 'gshadow', 'gshadow-', 'hdparm.conf', 'host.conf', 'hostname', 'hosts', 'hosts.allow', 'hosts.deny', 'inputrc', 'insserv.conf', 'issue', 'issue.net', 'kernel-img.conf', 'ld.so.cache', 'ld.so.conf', 'legal', 'libaudit.conf', 'locale.alias', 'locale.gen', 'localtime', 'login.defs', 'logrotate.conf', 'lsb-release', 'ltrace.conf', 'machine-id', 'magic', 'magic.mime', 'mailcap', 'mailcap.order', 'manpath.config', 'matplotlibrc', 'mime.types', 'mke2fs.conf', 'modules', 'mtab', 'nanorc', 'networks', 'nsswitch.conf', 'os-release', 'overlayroot.conf', 'overlayroot.local.conf', 'pam.conf', 'passwd', 'passwd-', 'popularity-contest.conf', 'profile', 'protocols', 'rc.local', 'resolv.conf', 'rmt', 'rpc', 'rsyslog.conf', 'screenrc', 'securetty', 'services', 'shadow', 'shadow-', 'shells', 'sos.conf', 'subgid', 'subgid-', 'subuid', 'subuid-', 'sudoers', 'sysctl.conf', 'timezone', 'ucf.conf', 'updatedb.conf', 'vtrgb', 'wgetrc', 'zsh_command_not_found']
Common subdirectories : ['NetworkManager', 'X11', 'acpi', 'alternatives', 'apache2', 'apm', 'apparmor', 'apparmor.d', 'apport', 'apt', 'bash_completion.d', 'binfmt.d', 'byobu', 'ca-certificates', 'calendar', 'cloud', 'console-setup', 'cron.d', 'cron.daily', 'cron.hourly', 'cron.monthly', 'cron.weekly', 'dbus-1', 'default', 'depmod.d', 'dhcp', 'dpkg', 'emacs', 'fonts', 'groff', 'gss', 'init', 'init.d', 'initramfs-tools', 'insserv', 'insserv.conf.d', 'iproute2', 'iscsi', 'kbd', 'kernel', 'ld.so.conf.d', 'ldap', 'lighttpd', 'logcheck', 'logrotate.d', 'lvm', 'mdadm', 'modprobe.d', 'modules-load.d', 'network', 'newt', 'opt', 'pam.d', 'perl', 'php', 'pm', 'polkit-1', 'pollinate', 'ppp', 'profile.d', 'python', 'python2.7', 'python3', 'python3.5', 'python3.6', 'rc0.d', 'rc1.d', 'rc2.d', 'rc3.d', 'rc4.d', 'rc5.d', 'rc6.d', 'rcS.d', 'resolvconf', 'rsyslog.d', 'security', 'selinux', 'sgml', 'skel', 'ssh', 'ssl', 'sudoers.d', 'sysctl.d', 'systemd', 'terminfo', 'tmpfiles.d', 'udev', 'ufw', 'update-manager', 'update-motd.d', 'update-notifier', 'vim', 'vmware-tools', 'xdg', 'xml']

diff /home /home
Identical files : ['e94ae880c0dbde73291e3fa78cd4c133.py']

diff /lib /lib
Identical files : ['cpp', 'klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so', 'libhandle.so.1', 'libhandle.so.1.0.3']
Common subdirectories : ['apparmor', 'cryptsetup', 'hdparm', 'ifupdown', 'init', 'lsb', 'modprobe.d', 'modules', 'modules-load.d', 'open-iscsi', 'recovery-mode', 'resolvconf', 'systemd', 'terminfo', 'udev', 'ufw', 'x86_64-linux-gnu', 'xtables']

diff /lib64 /lib64
Identical files : ['ld-linux-x86-64.so.2']

diff /media /media

diff /mnt /mnt

diff /opt /opt

diff /proc /proc
Identical files : ['buddyinfo', 'cgroups', 'cmdline', 'consoles', 'cpuinfo', 'crypto', 'devices', 'diskstats', 'dma', 'execdomains', 'fb', 'filesystems', 'interrupts', 'iomem', 'ioports', 'kallsyms', 'kcore', 'key-users', 'keys', 'kmsg', 'kpagecgroup', 'kpagecount', 'kpageflags', 'loadavg', 'locks', 'mdstat', 'meminfo', 'misc', 'modules', 'mounts', 'mtrr', 'pagetypeinfo', 'partitions', 'sched_debug', 'schedstat', 'slabinfo', 'softirqs', 'stat', 'swaps', 'sysrq-trigger', 'timer_list', 'timer_stats', 'uptime', 'version', 'version_signature', 'vmallocinfo', 'vmstat', 'zoneinfo']
Common subdirectories : ['1', '265', '29568', '29569', '29570', '348', '350', '354', '359', '363', '364', '374', '395', '413', '440', '441', '442', '55', '58', 'acpi', 'bus', 'driver', 'fs', 'irq', 'net', 'scsi', 'self', 'sys', 'sysvipc', 'thread-self', 'tty']

diff /run /run
Identical files : ['agetty.reload', 'atd.pid', 'crond.pid', 'crond.reboot', 'dhclient.eth0.pid', 'mlocate.daily.lock', 'rsyslogd.pid', 'sshd.pid', 'utmp']
Common subdirectories : ['cloud-init', 'dbus', 'lock', 'log', 'lvm', 'mount', 'network', 'php', 'resolvconf', 'screen', 'sendsigs.omit.d', 'shm', 'sshd', 'sudo', 'systemd', 'udev', 'user', 'uuidd']
Common funny cases : ['acpid.socket', 'apport.socket', 'dmeventd-client', 'dmeventd-server', 'initctl', 'snapd-snap.socket', 'snapd.socket']

diff /sbin /sbin
Identical files : ['MAKEDEV', 'acpi_available', 'agetty', 'apm_available', 'apparmor_parser', 'badblocks', 'blkdiscard', 'blkid', 'blockdev', 'bridge', 'capsh', 'cfdisk', 'cgdisk', 'chcpu', 'cryptdisks_start', 'cryptdisks_stop', 'cryptsetup', 'cryptsetup-reencrypt', 'ctrlaltdel', 'debugfs', 'depmod', 'dhclient', 'dhclient-script', 'dmeventd', 'dmsetup', 'dosfsck', 'dosfslabel', 'dumpe2fs', 'e2fsck', 'e2image', 'e2label', 'e2undo', 'ethtool', 'fatlabel', 'fdisk', 'findfs', 'fixparts', 'fsadm', 'fsck', 'fsck.cramfs', 'fsck.ext2', 'fsck.ext3', 'fsck.ext4', 'fsck.ext4dev', 'fsck.fat', 'fsck.minix', 'fsck.msdos', 'fsck.nfs', 'fsck.vfat', 'fsck.xfs', 'fsfreeze', 'fstab-decode', 'fstrim', 'gdisk', 'getcap', 'getpcaps', 'getty', 'halt', 'hdparm', 'hwclock', 'ifconfig', 'ifdown', 'ifenslave', 'ifenslave-2.6', 'ifquery', 'ifup', 'init', 'insmod', 'installkernel', 'ip', 'ip6tables', 'ip6tables-restore', 'ip6tables-save', 'ipmaddr', 'iptables', 'iptables-restore', 'iptables-save', 'iptunnel', 'iscsi-iname', 'iscsi_discovery', 'iscsiadm', 'iscsid', 'iscsistart', 'isosize', 'kbdrate', 'killall5', 'ldconfig', 'ldconfig.real', 'logsave', 'losetup', 'lsmod', 'lvchange', 'lvconvert', 'lvcreate', 'lvdisplay', 'lvextend', 'lvm', 'lvmchange', 'lvmconf', 'lvmconfig', 'lvmdiskscan', 'lvmdump', 'lvmetad', 'lvmpolld', 'lvmsadc', 'lvmsar', 'lvreduce', 'lvremove', 'lvrename', 'lvresize', 'lvs', 'lvscan', 'mdadm', 'mdmon', 'mii-tool', 'mkdosfs', 'mke2fs', 'mkfs', 'mkfs.bfs', 'mkfs.cramfs', 'mkfs.ext2', 'mkfs.ext3', 'mkfs.ext4', 'mkfs.ext4dev', 'mkfs.fat', 'mkfs.minix', 'mkfs.msdos', 'mkfs.ntfs', 'mkfs.vfat', 'mkfs.xfs', 'mkhomedir_helper', 'mkntfs', 'mkswap', 'modinfo', 'modprobe', 'mount.fuse', 'mount.lowntfs-3g', 'mount.ntfs', 'mount.ntfs-3g', 'mount.vmhgfs', 'nameif', 'ntfsclone', 'ntfscp', 'ntfslabel', 'ntfsresize', 'ntfsundelete', 'on_ac_power', 'pam_extrausers_chkpwd', 'pam_extrausers_update', 'pam_tally', 'pam_tally2', 'parted', 'partprobe', 'pivot_root', 'plipconfig', 'plymouthd', 'poweroff', 'pvchange', 'pvck', 'pvcreate', 'pvdisplay', 'pvmove', 'pvremove', 'pvresize', 'pvs', 'pvscan', 'rarp', 'raw', 'reboot', 'resize2fs', 'resolvconf', 'rmmod', 'route', 'rtacct', 'rtmon', 'runlevel', 'runuser', 'setcap', 'setvtrgb', 'sfdisk', 'sgdisk', 'shadowconfig', 'shutdown', 'slattach', 'start-stop-daemon', 'sulogin', 'swaplabel', 'swapoff', 'swapon', 'switch_root', 'sysctl', 'tc', 'telinit', 'tipc', 'tune2fs', 'udevadm', 'unix_chkpwd', 'unix_update', 'ureadahead', 'vconfig', 'veritysetup', 'vgcfgbackup', 'vgcfgrestore', 'vgchange', 'vgck', 'vgconvert', 'vgcreate', 'vgdisplay', 'vgexport', 'vgextend', 'vgimport', 'vgimportclone', 'vgmerge', 'vgmknodes', 'vgreduce', 'vgremove', 'vgrename', 'vgs', 'vgscan', 'vgsplit', 'wipefs', 'xfs_repair', 'xtables-multi', 'zramctl']

diff /srv /srv

diff /sys /sys
Common subdirectories : ['block', 'bus', 'class', 'dev', 'devices', 'firmware', 'fs', 'hypervisor', 'kernel', 'module', 'power']

diff /tmp /tmp
Common subdirectories : ['.ICE-unix', '.Test-unix', '.X11-unix', '.XIM-unix', '.font-unix']

diff /usr /usr
Common subdirectories : ['bin', 'games', 'include', 'lib', 'local', 'sbin', 'share', 'src']

diff /var /var
Common subdirectories : ['backups', 'cache', 'crash', 'lib', 'local', 'lock', 'log', 'mail', 'opt', 'run', 'snap', 'spool', 'tmp']

        3. d.report_full_closure() : Es igual que el anterior, pero hace el trabajo recursivamente. Compara y muestra los subdirectorios comunes, archivos idénticos y casos divertidos comunes (las dos cosas no coinciden en tipo, es decir, una es un directorio y la otra es un archivo).

Python3

import filecmp as fc
import os
 
dir_1 = dir_2 = os.getcwd()
 
# creating object and invoking constructor
d = fc.dircmp(dir_1, dir_2, ignore=None, hide=None)
 
print("comparison 3 :")
d.report_full_closure()

módulo de archivo temporal:

  • Este módulo se utiliza para crear archivos y directorios temporales.
  • Esto crea los archivos y directorios temporales en los directorios temporales creados por los sistemas operativos.
  • Para Windows, los archivos temporales se pueden encontrar en la siguiente ruta:

perfil/AppData/Local/temp

mkdtemp() :

  • Se utiliza para crear un directorio temporal pasando los parámetros sufijo, prefijo y dir.
  • El sufijo y el prefijo corresponden a las convenciones de nomenclatura del directorio temporal creado. el sufijo decide cómo debe terminar el nombre del archivo y el prefijo decide el comienzo del nombre y se establece principalmente en ‘ tmp ‘.
  • El parámetro dir especifica la ruta donde se debe crear el directorio temporal. De forma predeterminada, el directorio se establece en el directorio temporal creado por los sistemas operativos.
  • Estos directorios temporales son legibles, escribibles y buscables solo por el creador utilizando la identificación única del creador.
  • El usuario que creó el directorio temporal es responsable de eliminar el directorio temporal al finalizar el trabajo.
  • Devuelve la ruta del nuevo directorio creado.

Python3

import tempfile as tf
 
f = tf.mkdtemp(suffix='', prefix='tmp')
print(f)
Producción

/tmp/tmp0ndvk7p_

Directorio temporal():

  • Esta función hace uso de mkdtemp() para crear un directorio temporal y los mismos parámetros también se pasan aquí.
  • La principal diferencia es que el objeto creado como resultado actúa como un administrador de contexto.
  • El usuario no necesita eliminar manualmente el archivo temporal creado, el sistema de archivos lo borra automáticamente.
  • Para obtener el nombre del directorio temporal recién creado, se puede usar object.name .
  • Para borrar el directorio temporal explícitamente, se puede usar la función cleanup() .

Python3

import tempfile as tf
 
f = tf.TemporaryDirectory(suffix='', prefix='tmp')
print("Temporary file :", f.name)
 
f.cleanup()
Producción

Temporary file : /tmp/tmpp3wr65fj

módulo de cierre

Este módulo se ocupa del número de operaciones de alto nivel en archivos y directorios. Permite copiar/mover directorios de un origen a un destino.

shutil.copytree(s, d, symlinks=False, ignore=Ninguno, copy_function=copy2, ignore_dangling_symlinks=False):

  • Copia recursivamente los directorios de origen en el directorio de destino (d) siempre que ‘d’ no exista todavía.
  • Los enlaces simbólicos también se conocen como enlaces simbólicos que denotan algunos archivos virtuales o carpetas de referencia o carpetas que se encuentran en otro lugar. Puede tomar valores como verdadero, falso u omitido. Si es verdadero, los enlaces simbólicos en el origen también se crean como enlaces simbólicos en el destino, pero los metadatos asociados no se copiarán. Si el valor es falso o se omite, el contenido y los metadatos del archivo vinculado se copian en el destino.
  • Para ignorar, un invocable que toma el directorio que se visita y su contenido como el valor de retorno de os.listdir() ya que copytree() es una función recursiva. Los archivos que se ignorarán durante la copia se pueden nombrar con este parámetro.
  • La función copy2 se usa como la función copy_function predeterminada porque permite copiar metadatos. También se pueden usar copy(), copystat() .

shutil.rmtree( ruta, ignore_errors=Falso, onerror=Ninguno):

  • Elimina un directorio completo. Esto supera la principal desventaja de os.rmdir() que elimina el directorio solo si está vacío.
  • La ruta debe ser un directorio válido. No se aceptarán los enlaces simbólicos a un directorio.
  • Si ignore_error es verdadero, se ignorarán los errores generados al eliminar el directorio. Si se da falso o se omite , entonces los errores generados deben ser manejados por los mencionados en el parámetro onerror .
  • onerror es un invocable que toma tres parámetros, a saber, función, ruta y excinfo. La primera es la función que genera la excepción, la siguiente es la ruta que se pasa a la función y la última es la información de excepción devuelta por sys.exc_info() .

shutil.movimiento(s,d):

  • Mueve recursivamente el directorio de origen al destino especificado.
  • Se supone que el destino no existe ya, si existe según la semántica os.rename(), se sobrescribirá.

Publicación traducida automáticamente

Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *