9个必知的Python操作文件/文件夹方法
近幾年隨著Python的熱度不斷上漲,人們漸漸使用這門編程語言來進行一些自動化操作,以節省重復勞動帶來的效率低下,那么必定會涉及到對文件系統的操作,包括文件的增、刪、改、查等等,今天小編就來介紹一下如何用Python來實現這些功能
輸出當前的路徑
我們可以通過Python當中的OS庫來獲取當前文件所在的位置
import?os os.getcwd()路徑的拼接
我們通過os.path.join()方法來實現
os.path.join('output',?'Book1.xlsx')output
output\Book1.xlsx確認某文件夾或者是文件是否存在
我們先來看如何來確認文件夾是否存在,同樣也是通過OS模塊
os.path.exists('directory_name')同樣的道理,要是我們查看一下某個文件是否存在的時候,可以這么做
os.path.exists('path/file_name')建立文件夾目錄
然后我們來看一下如何新建一個文件夾
os.mkdir("文件夾名稱")當然要是文件夾目錄已經提前存在的情況下,上述的代碼自然會報錯,所以我們通常會先檢查一下是否已經存在
if?not?os.path.exists('文件夾名稱'):os.mkdir('文件夾名稱')當然我們有時候需要在已建的文件夾下創建子文件夾,例如下圖
這個時候要是引用os.mkdir()方法或許會稍顯繁瑣,這時我們可以通過os.mkdirs()方法來實現
os.makedirs(os.path.join('test_dir',?'level_1',?'level_2',?'level_3'))羅列出當前目錄下所包含的所有文件
代碼如下
os.listdir('文件夾名稱')但是有時候我們可能想例如搜尋一下當前目錄下的所有文件中以“py”結尾的文件,我們可以通過通配符來實現,代碼如下
list(glob(os.path.join('.',?'*.py')))上面提到的glob模塊能夠快速查找我們想要的目錄和文件,它支持*、**、?、[]這四個通配符
移動文件
要是我們想在不同的目錄文件夾之下移動文件,該怎么操作呢?這里我們介紹Python當中的shutil模塊,假設我們想要將當前目錄下的幾個csv文件移動到“test_dir”目錄文件夾之下,代碼如下
import?shutilfor?file?in?list(glob(os.path.join('.',?'*.csv'))):shutil.move(file,?'test_dir')復制文件
當我們想要復制文件的時候,也可以使用shutil模塊,例如我們想要將幾個“test_dir”目錄文件夾下的csv文件復制到“output”目錄文件夾之下,代碼如下
shutil.copy(os.path.join('test_dir',?'data.csv'),?'output')除此之外,我們還能夠對粘貼過去的文件重命名,代碼如下
shutil.copy(os.path.join('test_dir',?'data.csv'),os.path.join('output',?'data_2.csv'))刪除文件
我們來看一下刪除文件該如何實現?os.remove()方法可以完成刪除文件的功能,
os.remove(os.path.join('output',?'data_2.csv'))當我們想要刪除一整個目錄文件夾的時候,可以使用os.rmdir()方法,當然只僅限于是空的目錄文件夾
os.rmdir(os.path.join('test_dir',?'level_1',?'level_2',?'level_3'))而對于目錄文件夾下存在文件的,并不是空的目錄文件夾,我們還是需要用到shutil模塊,代碼如下
shutil.rmtree("test_delete")或者是
shutil.rmtree(os.path.join("test_delete",?"test_1_delete"))創建和解壓 壓縮包
談及到操作壓縮包相關的內容,就不得不說zipobj這個模塊了
創建一個壓縮包
這里我們要用到的是zipfile模塊當中的write()方法
file_lists?=?list(glob(os.path.join('.',?'*.xlsx')))with?zipfile.ZipFile(r"我創建的壓縮包.zip",?"w")?as?zipobj:for?file?in?file_lists:zipobj.write(file)讀取壓縮包當中的文件信息
通過zipfile模塊當中的namelist()方法來實現
with?zipfile.ZipFile("我創建的壓縮包.zip",?"r")?as?zipobj:print(zipobj.namelist())output
['Book1.xlsx',?'supermarkt_sales.xlsx']可以看到輸出的就是上次我們打包的幾個excel文件
將壓縮包當中的單個文件,解壓出來
通過zipfile模塊當中的extract()方法來實現
dst?=?"output"with?zipfile.ZipFile("我創建的壓縮包.zip",?"r")?as?zipobj:zipobj.extract("Book1.xlsx",dst)上述代碼的用意就是將壓縮包當中的“Book1.xlsx”文件解壓至“output”目錄文件夾下
將壓縮包中的所有文件,都解壓出來
通過zipfile模塊當中的extractall()方法來實現,代碼如下
dst?=?"output"with?zipfile.ZipFile("我創建的壓縮包.zip",?"r")?as?zipobj:zipobj.extractall(dst)各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的9个必知的Python操作文件/文件夹方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做 SQL 性能优化真是让人干瞪眼
- 下一篇: 超干货 | 泰勒图(Taylor dia