在 Python 中, shutil 模块还提供了一系列对文件和文件集合的高级操作。特别是提供了一些支持文件拷贝和删除的函数。下面介绍一些组织文件常用操作。
复制文件
使用 shutil.copy(src, dst) 可以把 src 路径下的指定文件复制到 dst 路径下,如果 dst 为路径,则复制后的文件名和原文件一致。如果 dst 为路径加上文件名,则复制后的文件名为当前指定的文件名。最后该函数会返回文件的路径字符串。
注意:即便是高级文件拷贝函数也无法拷贝所有的文件元数据。例如在 Windows 操作系统上,不会拷贝文件所有者、ACL 和替代数据流。
下面的例子演示了如何将当前用户下的 python.py 文件拷贝到 D 盘并更改其文件名为 p1.py 。
>>> import shutil
>>> shutil.copy('C:\\Users\\Caizi\\python.py', 'D:\\p1.py')
'D:\\p1.py'
复制整个文件夹及其
包含的文件和文件夹
使用 shutil.copytree(src, dst) 可以将 src 路径的整个文件夹及其包含的文件和文件夹复制到新指定的 dst 路径下。该函数会返回 dst 的文件夹的路径字符串。下面的例子演示了如何将 python 文件夹里的所有内容复制到 D:\python_backup 目录下。
>>> import shutil
>>> shutil.copytree('C:\\Users\\Caizi\\python', 'D:\\python_backup')
'D:\\python_backup'
移动文件和文件夹
使用 shutil.move(src, dst) 可以将 src 路径的文件夹移动到 dst 路径下,返回移动文件夹的新绝对路径字符串。
注意:使用此方法如果新路径下有文件与要移入的文件重名,会自动替换文件,删除旧文件,保留新移入的文件。
>>> import shutil
>>> shutil.move('C:\\Users\\Caizi\\python', 'D:\\python_backup')
'D:\\python_backup'
文件重命名
使用 shutil.move(src, dst) 还可以将文件重命名。下面的例子演示了如何把当前目录下的 python.py 文件重命名为 day.py 。
注意:第二个参数为文件名,文件有扩展名的一定要加扩展名。如果只指定了 day ,最后的文件名就为 day ,而不是你想象中的 day.py 。
>>> import shutil
>>> shutil.move('C:\\Users\\Caizi\\python.py', 'C:\\Users\\Caizi\\day.py')
'C:\\Users\\Caizi\\day.py'
永久删除文件
使用 os.unlink(path) 或者 os.remove(path) 可以将指定路径下的文件永久删除。
>>> import os
>>> os.unlink('C:\\Users\\Caizi\\python.py')
永久删除文件夹
使用 os.rmdir(path) 可以将指定路径下的文件夹永久删除。
注意:使用此方法删除的文件夹必须为空文件夹。
>>> import os
>>> os.rmdir('D:\\python')
永久删除文件夹及其
包含的文件和文件夹
使用 shutil.rmtree(path) 可以将指定路径下的文件夹及其包含的文件和文件夹永久删除。
>>> import shutil
>>> shutil.rmtree('D:\\python')
遍历目录树
使用 os.walk(path) 可以将遍历目录树。下面的例子演示了遍历 D:\python 目录的结果。
目录树结构 |
import os
if __name__ == '__main__':
for folder, subfolders, file in os.walk('D:\\python'):
print('Current folder is ' + folder)
for subfolder in subfolders:
print('Subfolder of ' + folder + ' is ' + subfolder)
for filename in file:
print(filename + ' in ' + folder)
print('')
结果输出如下
Current folder is D:\python |