Python 創建、復制、移動、刪除和重命名文件和文件夾


我們本文學習使用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' )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM