我們本文學習使用Python對電腦文件和文件夾進行操作,包括創建、復制、移動、刪除和重命名等操作。
os.mkdir() 創建文件夾
# 引入 os 模塊,下面的代碼都默認已引入
|
1
2
3
4
5
|
import
os
os.mkdir(
'新的文件夾'
)
'''注意,如果當前已經有這個文件夾了,就會報錯
FileExistsError: [WinError 183] 當文件已存在時,無法創建該文件。: '新的文件夾'
所以我們可以在創建文件夾之前先判斷是否存在,不存在再新建。'''
|
os.path.exists('文件夾名稱') 可判斷文件夾是否存在
|
1
2
3
4
|
if
not
os.path.exists(
'新的文件夾'
):
os.mkdir(
'新的文件夾'
)
else
:
print
(
'該文件夾已存在,無法創建'
)
|
os.makedirs() 創建多層文件夾
創建多層文件夾的時候,當最里層文件夾存在的時候報錯
|
1
|
os.makedirs(
'第一層文件夾/第二層文件夾/第三層文件夾'
)
|
復制、移動、重命名需要使用shutil模塊
復制和移動文件(並重命名)
復制文件 shutil.copy()
shutil.copy('文件名',‘目的文件夾) 復制到目的文件夾下面
shutil.copy('文件名',‘目的文件夾/新文件名’) 復制到目的文件夾下面,之后重命名
移動文件 shutil.move()
shutil.move('文件名',‘目的文件夾) 移動到目的文件夾下面
shutil.move('文件名',‘目的文件夾/新文件名’) 移動到目的文件夾下面,之后重命名
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 引入shutil模塊
import
shutil
# 復制或移動到目的文件夾下面
# 如果只寫目標文件夾的名稱的話,如果目標文件夾不存在,則會將復制或移動之后的文件重命名為目標文件夾的名稱
# demo.txt 復制到 新的文件夾 下面
shutil.copy(
'demo.txt'
,
'新的文件夾'
)
# file1.txt 移動到 新的文件夾 下面
shutil.move(
'file1.txt'
,
'新的文件夾'
)
# 復制或移動到目的文件夾下面之后,重命名
# 如果目標文件夾不存在,則會報錯
# demo.txt 復制到 新的文件夾 下面,並重命名為new1.txt
shutil.copy(
'demo.txt'
,
'新的文件夾/new1.txt'
)
# file2.txt 移動到 新的文件夾 下面,並重命名為 new2.txt
shutil.move(
'file2.txt'
,
'新的文件夾/new2.txt'
)
|
復制和移動文件,如果目的文件夾不存在,或者要復制和移動的文件不存在,則都會報錯。
復制和移動對於移動到的文件夾下面是否存在同名文件,處理結果不同。如果同名文件存在,文件可以成功復制,並覆蓋目標文件。而移動文件的話,同名文件存在,則報錯。
|
1
2
3
4
5
6
7
8
9
|
# 建議在復制或移動之前做相應判斷
if
os.path.exists(
'新的文件夾'
):
shutil.copy(
'demo.txt'
,
'新的文件夾'
)
else
:
print
(
'目的文件夾不存在,無法復制'
)
if
os.path.exists(
'新的文件夾'
):
shutil.move(
'file1.txt'
,
'新的文件夾'
)
else
:
print
(
'目的文件夾不存在,無法移動'
)
|
復制和移動文件夾(並重命名)
復制和移動文件夾的時候,文件夾下面的所有文件和文件夾一同被復制或移動到目的路徑。
因為需要填寫復制和移動之后的文件夾名,所以可以寫原來的名稱,也可以寫新的文件夾名稱。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# 復制文件夾 shutil.copytree()
shutil.copytree(
'要復制的文件夾'
,
'目的文件夾/要復制的文件夾'
) 復制到目的文件夾下面
shutil.copytree(
'要復制的文件夾'
,
'目的文件夾/新文件夾'
) 復制過去並重命名為 新文件夾
# 移動文件夾 shutil.move()
shutil.copytree(
'要移動的文件夾'
,
'目的文件夾'
) 移動到目的文件夾下面
shutil.copytree(
'要移動的文件夾'
,
'目的文件夾/新文件夾'
) 復制過去並改名為 新文件夾
'''對於目標路徑下是否有同名文件夾,shutil.copytree() 和 shutil.move 運行結果不同。
復制文件夾,目標路徑下有同名文件夾,會報錯。
移動文件夾,目標路徑下有同名文件夾,則會移動到同名文件夾的下面,如果同名文件夾下面還有一個同名文件夾,才會報錯'''
# 假設 文件夾1 要移動到的 新文件夾/文件夾1 是存在的
shutil.move(
'文件夾1'
,
'新文件夾/文件夾1'
)
# 運行之后,文件夾結構會變成:新文件夾/文件夾1/文件夾1
# 如果 新文件夾/文件夾1/文件夾1 也存在,則會報錯
# 所以建議用下面的方法判斷是否存在同名文件夾
import
os
import
shutil
if
not
os.path.exists(
'新的文件夾/文件夾1'
):
shutil.copytree(
'文件夾1'
,
'新的文件夾/文件夾1'
)
else
:
print
(
'該文件夾已存在,無法復制'
)
# 對於移動文件夾來說,則下面兩個的執行結果是一樣的
if
not
os.path.exists(
'新的文件夾/文件夾1'
):
shutil.move(
'文件夾1, '
新的文件夾')
else
:
print
(
'該文件夾已存在,無法移動'
)
if
not
os.path.exists(
'新的文件夾/文件夾1'
):
shutil.move(
'文件夾1, '
新的文件夾')
else
:
print
(
'該文件夾已存在,無法移動'
)
|
重命名 os.rename()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 首先要引入os模塊,如果程序前面已經引入了,則不用重復引入
import
os
# demo.txt 重命名為 new.txt
os.rename(
'demo.txt'
,
'new.txt'
)
# 文件夾1 重命名為 文件夾2
os.rename(
'文件夾1'
,
'文件夾2'
)
# 如果目的文件夾不是當前文件夾下面,則相當於移動並重命名,跟shutil.move()執行效果一樣
# 所以下面這兩個語句運行結果是相同的
# demo.txt 重命名為 new.txt,並移動到 目的文件夾 下面
os.rename(
'demo.txt'
,
'目的文件夾/new.txt'
)
shutil.move(
'demo.txt'
,
'目的文件夾/new.txt'
)
# 文件夾1 移動到 新的文件夾 下面
os.rename(
'文件夾1'
,
'新的文件夾/文件夾1'
)
shutil.move(
'文件夾1'
,
'新的文件夾/文件夾1'
)
# 同樣重命名之前需要判斷是否有同名文件和文件夾,這里不再重復了
|
刪除
刪除文件 os.remove()
|
1
2
3
4
|
# 刪除 file1.txt
os.remove(
'file1.txt'
)
# 刪除 文件夾1 下面的 file1.txt
os.remove(
'文件夾1/file1.txt'
)
|
刪除文件夾 shutil.rmtree()
|
1
2
|
# 刪除 文件夾1
shutil.rmtree(
'文件夾1'
)
|
