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))
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()))
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)
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:
- 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()
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()
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)
/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()
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