对于文件和文件夹,我们最常做的操作分为三种:复制、移动、删除。
这三种操作可以通过shutil和os模块中的函数实现,下面通过对hello.txt的操作为例进行说明:
*复制:shutil.copy(source, destination) #复制文件
shutil.copytree(source, destination) #复制文件夹
*移动:shutil.move(source, destination);
*删除:os.unlink() #删除文件
os.rmdir() #删除文件夹,文件夹必须为空
shutil.rmtree() #删除文件夹,包含文件夹及文件夹下的所有文件
hello.txt位于"C:\myweb\chapter01"目录下:
>>> import shutil, os
>>> os.chdir(r'C:\myweb\chapter01')
>>> os.listdir()
['Calculator.php', 'ex1_1.php', 'hello.txt', 'welcome.php', '_notes']
#复制hello.txt到"C:\myweb\chapter02"目录下
>>> shutil.copy('hello.txt', r'C:\myweb\chapter02')
'C:\\myweb\\chapter02\\hello.txt'
#复制hello.txt到"C:\myweb\chapter02"目录并修改名称为hello_01.txt
>>> shutil.copy('hello.txt', r'C:\myweb\chapter02\hello_01.txt')
'C:\\myweb\\chapter02\\hello_01.txt'
#复制"C:\myweb\chapter01"到"C:\myweb\chapter02"目录下
>>> shutil.copytree(r'C:\myweb\chapter01', r'C:\myweb\chapter02\chapter01')
'C:\\myweb\\chapter02\\chapter01'
#复制"C:\myweb\chapter01"到"C:\myweb\chapter02"目录下并修改名称为chapter01_bak
>>> shutil.copytree(r'C:\myweb\chapter01', r'C:\myweb\chapter02\chapter01_bak')
'C:\\myweb\\chapter02\\chapter01_bak'
#移动hello.txt到"C:\myweb\chapter02"目录下,并修改名称为hello_02.txt
>>> shutil.move('hello.txt', r'C:\myweb\chapter02\hello_02.txt')
'C:\\myweb\\chapter02\\hello_02.txt'
#创建test文件夹并将其移动至chapter02文件夹下
>>> os.mkdir(r'C:\myweb\chapter01\test')
>>> os.path.isdir(r'C:\myweb\chapter01\test')
True
>>> shutil.move(r'C:\myweb\chapter01\test', r'C:\myweb\chapter02\test')
'C:\\myweb\\chapter02\\test'
#删除文件hello_02.txt
>>> os.chdir(r'C:\myweb\chapter02')
>>> os.listdir(os.getcwd())
['CalculatorII.php', 'chapter01', 'chapter01_bak', 'circleCal.php', 'hello.txt', 'hello_01.txt', 'hello_02.txt', 'Square.php', 'test']
>>> os.unlink('hello_02.txt')
>>> os.listdir(os.getcwd())
['CalculatorII.php', 'chapter01', 'chapter01_bak', 'circleCal.php', 'hello.txt', 'hello_01.txt', 'Square.php', 'test']
#删除空文件夹test
>>> os.rmdir(r'./test')
>>> os.listdir(os.getcwd())
['CalculatorII.php', 'chapter01', 'chapter01_bak', 'circleCal.php', 'hello.txt', 'hello_01.txt', 'Square.php']
#删除非空文件夹chapter01
>>> shutil.rmtree(r'C:\myweb\chapter01')