【Python從入門到精通】(十八)Python的文件夾操作,創建文件夾復制文件等等
您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦。

本文重點介紹PythonPython的文件夾操作,包括但是不限于創建文件夾復制文件。
干貨滿滿,建議,需要用到時常看看。 小伙伴們如有問題及需要,歡迎踴躍留言哦~ ~ ~。
@[TOC]
前言
上篇文章介紹了Python的模塊和包。這篇文章接著介紹另一個非常重要的點–Python的文件操作(IO)。文件操作是程序必不可少的一個知識點。不管是文件的上傳下載;還是文件的讀取寫入都屬于文件的操作。話不多說,直接進入主題
絕對路徑和相對路徑
對于絕對路徑和相對路徑相信小伙伴們都不會陌生。絕對路徑就是從根目錄開始的路徑,相對路徑就是相對于當前工作目錄所在的位置。
根目錄:Window系統中以盤符(C: D:)作為根目錄。而Max OS或者Linux系統中以/作為根目錄。
當前工作目錄:就是程序運行的工作目錄,所有沒有從根目錄開始的文件名或者路徑,都假定在當前工作目錄下。在Python中可以通過os.getcwd()函數取得當前工作路徑的字符串,可以通過os.chdir()改變它。
>>> import os >>> os.getcwd() 'D:\學習記錄\PycharmProjects\python_demo_1'
如上本地程序的當前工作目錄是D:\學習記錄\PycharmProjects\python_demo_1,若文件file.txt位于該目錄下,則file.txt的相對路徑表示為.\file.txt (其中.\就表示當前目錄)
文件路徑的操作
Python中操作文件的模塊是os模塊。文件的所有操作方法由該模塊提供。所以需要先引入該模塊 import os
os.path.abspath(path) 獲取當前目錄的絕對路徑
os.path.isabs(path) 如果參數path是一個絕對路徑,就返回True,如果參數是一個相對路徑,就返回False。
os.path.relpath(path,start) 將返回從start路徑到path的相對路徑的字符串,如果沒有提供start,就使用當前工作目錄作為開始目錄。
os.path.dirname(path) 將返回一個字符串,它包含path參數中最后一個斜杠之前的所有內容。
os.path.basename(path) :將返回一個字符串,它包含path參數中最后一個斜杠之后的所有內容。
os.path.split(path): 可以通過獲得包含路徑的目錄名稱和基本名稱的元組。
os.path.exists(path) 判斷路徑path是否存在,如果存在則返回True,否則返回False。
os.path.isdir(path): 判斷路徑path是否是文件夾,如果是的話則返回True,否則返回False。
9. os.path.isfile(path) 判斷路徑path是否是文件,如果是的話則返回True,否則返回False。
# 獲取當前文件絕對路徑 print(os.path.abspath(".")) #也可以這樣寫 basedir = os.path.abspath(os.path.dirname(__file__)) print(basedir) # 判斷是否是絕對路徑 path = 'D:\學習記錄\PycharmProjects\python_demo_1' print(os.path.isabs(path)) # 將返回從 start 路徑到 path 的相對路徑的字符串。 # 如果沒有提供 start,就使用當前工作目錄作為開始路徑。 print(os.path.relpath("/python_demo_1", "D:\學習記錄\PycharmProjects")) print(os.path.relpath('/demo')) # 獲取當前類的路徑 path = "D:\學習記錄\PycharmProjects\python_demo_1/demo/io/path_test.py" print(os.path.basename(path)) print(os.path.dirname(path)) print(os.path.split(path)) # 判斷路徑是否存在 print(os.path.exists("D:\學習記錄\PycharmProjects\python_demo_1")) print(os.path.isdir('D:\學習記錄\PycharmProjects\python_demo_1')) print(os.path.isfile('D:\學習記錄\PycharmProjects\python_demo_1/demo/io/path_test.py'))
運行結果是:
D:\學習記錄\PycharmProjects\python_demo_1\demo\io True ..\..\python_demo_1 ..\..\..\..\..\demo path_test.py D:\學習記錄\PycharmProjects\python_demo_1/demo/io ('D:\學習記錄\PycharmProjects\python_demo_1/demo/io', 'path_test.py') True True True
os.name 獲取系統類型
os.environ 獲取系統環境變量
os.path.join(path, *paths) 將多個目錄拼接起來。
os.path.splitext(path)[1] 獲取文件的后綴名,其中path必須是一個文件完整路徑。
os.mkdir(path): 創建名為path的目錄,需要注意的是該方法只能創建一層目錄,不能遞歸創建目錄,遞歸創建目錄可以用os.makedirs(path)方法。
os.rmdir(path):移除名為path的目錄,需要注意的是該方法同樣只能移除一層目錄,不能遞歸刪除目錄。遞歸刪除目錄使用os.removedirs(path)方法。
os.listdir(path):獲取目錄path下所有的子目錄或者子文件。
os.remove(path): 刪除文件
# 創建目錄 os.mkdir("d:/test") # 刪除一個目錄 os.rmdir('d:/test') # 創建d:/test1/test2目錄 os.makedirs("d:/test1/test2") # 在某個目錄下創建一個新目錄,首先把新目錄的完整地址表示出來 print(os.path.join("D:/學習記錄/PycharmProjects", 'demo')) # 獲取文件擴展名 file_path = "D:/學習記錄/PycharmProjects/python_demo_1/demo/io/os_test.py" print("后綴名是:" + os.path.splitext(file_path)[1]) # 列出當前目錄下的所有目錄 gen = [x for x in os.listdir('.') if os.path.isdir(x)] print(gen) # 列出當前目錄下所有的.py文件,也只需一行代碼: list = [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'] print(list)
運行結果是:
D:/學習記錄/PycharmProjects\demo 后綴名是:.py ['serializable', 'test_io', 'test_io1'] ['dir_test.py', 'io_demo.py', 'os_test.py', 'path_test.py', 'read_test.py', 'stringio_test.py']
列出當前目錄已經當前目錄的所有目錄下后綴名是.py的所有文件。這里使用到了遞歸函數,通過splitext方法獲取文件后綴名,通過listdir函數列出傳入的filepath的所有子目錄或者文件。
def gci(filepath): files = os.listdir(filepath) for fi in files: fi_d = os.path.join(filepath, fi) if os.path.isdir(fi_d): gci(fi_d) elif os.path.splitext(fi_d)[1] == '.py': print(fi_d)
shutil模塊
除了os模塊之外,還有一個重要的操作文件或者文件夾的模塊shutil模塊。該模塊可以用來刪除文件夾,復制文件等等。下面就簡單的介紹一下其功能吧。
shutil.copytree(src, dst) 用來復制文件夾,將src目錄下的內容復制到dst目錄下。如果dst目錄下存在了src下的內容,則方法會報錯。
shutil.copyfile(src, dst) 用來復制文件,將src指定的文件復制給dst指定的文件
shutil.rmtree(path) 用于刪除path目錄
import shutil import os # 復制文件夾 src_os_path = "D:/學習記錄/PycharmProjects/python_demo_1/demo/io" dst_os_path = "D:/test1/test2/dst_io" if not os.path.exists(dst_os_path): shutil.copytree(src_os_path, dst_os_path) # 文件復制 src_os_test_path = "D:/學習記錄/PycharmProjects/python_demo_1/demo/io/os_test.py" dst_os_test_path = "D:/test1/test2/dst_os_test.py" if not os.path.exists(dst_os_test_path): shutil.copyfile(src_os_test_path, dst_os_test_path) path1 = "D:/test1/test4/test5" if not os.path.exists(path1): os.makedirs(path1) # 刪除文件夾 shutil.rmtree(path1)
運行結果是:
總結
本文詳細介紹了Python中操作文件各種方法,主要涉及絕對路徑,相對路徑等知識點。
我是碼農飛哥,再次感謝您讀完本文。
Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。