Python目录管理
目录是在计算机上存储、组织和分离文件的一种方式。没有父目录的目录称为根目录。到达文件的方式称为路径。该路径包含目录名称、由斜杠和冒号分隔的文件夹名称的组合,这提供了到系统中文件的路径。
使用Python进行目录管理
Python包含几个模块,这些模块具有许多用于操作和处理数据的内置函数。 Python还提供了帮助我们与操作系统和文件交互的模块。这些类型的模块也可以用于目录管理。下面列出了提供这些功能的模块:
- os 和 os.path
- 文件cmp
- 临时文件
- 舒蒂尔
os 和 os.path 模块
os 模块用于以各种方式处理文件和目录。它提供了创建/重命名/删除目录的规定。这甚至允许知道当前的工作目录并将其更改为另一个。它还允许将文件从一个目录复制到另一个目录。下面解释用于目录管理的主要方法。
创建新目录:
- os.mkdir(name)方法来创建一个新目录。
- 新目录的所需名称作为参数传递。
- 默认情况下,它会在当前工作目录中创建新目录。
- 如果必须在其他地方创建新目录,则必须指定该路径,并且该路径应包含正斜杠而不是反斜杠。
Python3
import os
# creates in current working directory
os.mkdir('new_dir')
# creates in D:\
os.mkdir('D:/new_dir')
Python3
import os
print("String format :", os.getcwd())
print("Byte string format :", os.getcwdb())
Python3
import os
os.rename('file1.txt','file1_renamed.txt')
Python3
import os
os.renames('file1.txt', 'D:/file1_renamed.txt')
Python3
import os
print("Current directory :", os.getcwd())
# Changing directory
os.chdir('/home/nikhil/Desktop/')
print("Current directory :", os.getcwd())
Python3
import os
print("The files in CWD are :",os.listdir(os.getcwd()))
Python3
import os
dir_li=os.listdir('k:/files')
if len(dir_li)==0:
print("Error!! Directory not empty!!")
else:
os.rmdir('k:/files')
Python3
import os
# current working directory of
# GeeksforGeeks
cwd='/'
print(os.path.isdir(cwd))
# Some other directory
other='K:/'
print(os.path.isdir(other))
Python3
import os
print(os.path.getsize(os.getcwd()))
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)
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()
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()
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()
Python3
import tempfile as tf
f = tf.mkdtemp(suffix='', prefix='tmp')
print(f)
Python3
import tempfile as tf
f = tf.TemporaryDirectory(suffix='', prefix='tmp')
print("Temporary file :", f.name)
f.cleanup()
获取当前工作目录 (CWD):
- os.getcwd()可以使用。
- 它返回一个字符串,表示当前工作目录的路径。
- os.getcwdb()也可以使用,但它返回一个表示当前工作目录的字节字符串。
- 这两种方法都不需要传递任何参数。
Python3
import os
print("String format :", os.getcwd())
print("Byte string format :", os.getcwdb())
输出:
String format : /home/nikhil/Desktop/gfg
Byte string format : b'/home/nikhil/Desktop/gfg'
重命名目录:
- os.rename()方法用于重命名目录。
- 传递的参数是 old_name 后跟 new_name。
- 如果传递了 new_name 的目录已经存在,则在 Unix 和 Windows 的情况下都会引发 OSError。
- 如果一个文件已经以 new_name 存在,在 Unix 中不会出现错误,该目录将被重命名。但在 Windows 中,不会发生重命名,并且会引发错误。
- os.renames('old_name','dest_dir:/new_name')方法的工作方式与os.rename()类似,但它将重命名的文件移动到指定的目标目录(dest_dir)。
例如,假设当前工作目录中有一个名为“file1.txt”的文件。现在只需重命名它:
Python3
import os
os.rename('file1.txt','file1_renamed.txt')
如果需要重命名文件并将其移动到其他目录,则代码片段应为:
Python3
import os
os.renames('file1.txt', 'D:/file1_renamed.txt')
更改当前工作目录 (CWD):
- 计算机系统中的每个进程都会有一个与之关联的目录,称为当前工作目录(CWD)。
- os.chdir()方法用于更改它。
- 传递的参数是希望转移到的所需目录的路径/名称。
表单示例,如果我们需要将 CWD 更改为 D:/ 中的 my_folder,则使用以下代码段。
Python3
import os
print("Current directory :", os.getcwd())
# Changing directory
os.chdir('/home/nikhil/Desktop/')
print("Current directory :", os.getcwd())
输出:
Current directory : /home/nikhil/Desktop/gfg
Current directory : /home/nikhil/Desktop
列出目录中的文件
- 一个目录可能包含子目录和其中的许多文件。要列出它们,使用os.listdir()方法。
- 它要么不带参数,要么只带一个参数。
- 如果未传递参数,则列出 CWD 的文件和子目录。
- 如果需要列出除 CWD 之外的任何其他目录的文件,则将该目录的名称/路径作为参数传递。
例如:列出 CWD-GeeksforGeeks(根目录)中的文件
Python3
import os
print("The files in CWD are :",os.listdir(os.getcwd()))
输出:
The files in CWD are : [‘site folder’, ‘.directory’, ‘proxy.txt’, ‘poem python.txt’, ‘left bar’, ‘images’, ‘Welcome to GeeksforGeeks!\nPosts Add Ne.txt’, ‘trash.desktop’, ‘gfg.py’, ‘Sorry, you can not update core for some tim.txt’, ‘gfgNikhil Aggarwal.png’, ‘0001.jpg’, ‘gfg’, ‘gfgcerti.png’, ‘raju’, ‘images big’]
删除目录
- os.rmdir()方法用于删除/删除目录。
- 传递的参数是该目录的路径。
- 当且仅当目录为空时,它才会删除目录,否则会引发 OSError。
例如,让我们考虑一个目录 K:/files。现在要删除它,必须确保它是否为空,然后继续删除。
Python3
import os
dir_li=os.listdir('k:/files')
if len(dir_li)==0:
print("Error!! Directory not empty!!")
else:
os.rmdir('k:/files')
要检查它是否是一个目录:
- 给定目录名称或路径, os.path.isdir(path)用于验证路径是否为有效目录。
- 它只返回布尔值。如果给定路径是有效目录,则返回true ,否则返回false 。
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
要获取目录的大小:
- os.path.getsize(path_name)以字节为单位给出目录的大小。
- 如果将无效路径作为参数传递,则会引发 OSError。
Python3
import os
print(os.path.getsize(os.getcwd()))
4096
获取访问和修改时间:
- 获取目录的最后访问时间: os.path.getatime (path)
- 获取目录的lat修改时间: os.path.getmtime(path)
- 这些方法返回自纪元以来的秒数。要格式化它,可以使用 datetime 模块的 strftime( )函数。
示例:获取 GeeksforGeeks(根)目录的访问和修改时间
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
文件cmp模块
该模块提供了各种功能来执行文件和目录之间的比较。要比较目录,必须为类filecmp.dircmp创建一个对象,该对象描述要忽略哪些文件以及要对此类函数隐藏哪些文件。必须在调用此类的任何函数之前调用构造函数。可以调用构造函数,如下所示:
d = filecmp . dircmp( dir_1, dir_2, ignore=[a,b,c]/None, hide=[d,e,f]/None )
比较目录的功能:
- d.report() :比较调用构造函数时给出的两个目录,并提供有关两个目录中文件列表的摘要。如果找到任何相同的文件,它们也会被列出。公共子目录也打印在输出中。
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() :打印出通过的目录之间的比较以及直接公共子目录之间的比较。
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() :与上一个相同,但递归地完成工作。它比较并显示了常见的子目录,相同的文件和常见的搞笑案例(这两个东西类型不匹配,即一个是目录,另一个是文件。)
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()
临时文件模块:
- 该模块用于创建临时文件和目录。
- 这会在操作系统创建的临时目录中创建临时文件和目录。
- 对于 Windows,可以在以下路径中找到临时文件:
profile/AppData/Local/temp
mkdtemp():
- 它用于通过传递参数后缀、前缀和目录来创建一个临时目录。
- 后缀和前缀对应于创建的临时目录的命名约定。 suffix 决定文件名应该如何结束,prefix 决定文件名的开头,并且大多设置为 ' tmp '。
- dir 参数指定应创建临时目录的路径。默认情况下,目录设置为操作系统创建的临时目录。
- 该临时目录只能由创建者使用创建者的唯一 ID 进行读写和搜索。
- 创建临时目录的用户负责在工作完成后删除临时目录。
- 它返回创建的新目录的路径。
Python3
import tempfile as tf
f = tf.mkdtemp(suffix='', prefix='tmp')
print(f)
/tmp/tmp0ndvk7p_
临时目录():
- 该函数使用 mkdtemp() 创建一个临时目录,并且这里也传递了相同的参数。
- 主要区别在于,作为结果创建的对象充当上下文管理器。
- 用户不需要手动删除创建的临时文件,文件系统会自动清除。
- 要获取新创建的临时目录的名称,可以使用object.name 。
- 要显式删除临时目录,可以使用cleanup()函数。
Python3
import tempfile as tf
f = tf.TemporaryDirectory(suffix='', prefix='tmp')
print("Temporary file :", f.name)
f.cleanup()
Temporary file : /tmp/tmpp3wr65fj
关闭模块
该模块涉及对文件和目录的高级操作的数量。它允许将目录从源复制/移动到目标。
shutil.copytree(s, d, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False):
- 如果 'd' 不存在,则递归地将源目录 (s) 复制到目标目录 (d)。
- 符号链接也称为符号链接,表示一些虚拟文件或参考文件夹或位于其他地方的文件夹。它可以采用true、false 或省略等值。如果为 true,则源中的符号链接也将作为目标中的符号链接,但不会复制关联的元数据。如果该值为 false 或省略,则将链接文件的内容和元数据复制到目标。
- 对于忽略,一个可调用的对象,它获取正在访问的目录及其内容,例如 os.listdir() 的返回值,因为 copytree() 是一个递归函数。可以使用此参数命名复制时要忽略的文件。
- copy2函数用作默认的 copy_function,因为它允许复制元数据。也可以使用copy()、copystat() 。
shutil.rmtree(路径,ignore_errors=False,onerror=None):
- 删除整个目录。这克服了os.rmdir()的主要缺点,即只有在目录为空时才会删除目录。
- 路径应该是一个有效的目录。不接受指向目录的符号链接。
- 如果 ignore_error 为真,则删除目录时引发的错误将被忽略。如果给出false 或省略,则引发的错误应由onerror参数中提到的错误处理。
- onerror是一个可调用对象,它接受三个参数,即函数、 path 和 excinfo。第一个是引发异常的函数,下一个是要传递给函数的路径,最后一个是sys.exc_info()返回的异常信息。
shutil.move(s,d):
- 递归地将源目录移动到指定的目标。
- 目的地不应该已经存在,如果基于 os.rename() 语义存在,它将被覆盖。