​ 对于文件和文件夹,我们最常做的操作分为三种:复制、移动、删除。

​ 这三种操作可以通过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\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')