亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法

系統(tǒng) 1779 0

基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第1張圖片

作者 | Jeff Hale?

譯者 | 風車云馬; 責編 | Jane,Rachel

出品 | Python大本營(ID:pythonnews)


【導讀】在編寫一些Python程序的時候,我們常常需要與文件系統(tǒng)進行交互。在本文中,營長為大家整理了10個常用的相關(guān)命令,涉及查看信息、更改信息、刪除文件等,并提供了相應的終端命令,幫助大家更高效地對文件系統(tǒng)及其中的文件內(nèi)容進行操作。

?

通過一個能夠?qū)崿F(xiàn)與文件系統(tǒng)進行交互的Python程序,我們可以實現(xiàn)很多有趣的應用,但是大部分人并不知道如何實現(xiàn)這種交互。 本文為相關(guān)研發(fā)人員和數(shù)據(jù)科學家提供了一個實現(xiàn)指南,并重點介紹10個基本的os和shutil命令,以便通過腳本實現(xiàn)Python程序與文件系統(tǒng)的自動交互。

? ? ?? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第2張圖片 ? ? ? ?

文件系統(tǒng)和一棟房子的結(jié)構(gòu)相似。在每次進行大掃除的時候,我們都需要將很多箱的文件從一個屋子移動到另一個屋子,這和使用Python移動文件的操作很像。

? ? ?? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第3張圖片 ? ? ? ?

文件目錄則像裝滿了東西的箱子,只不過在文件系統(tǒng)中,裝的都是系統(tǒng)中存儲的文件。

? ? ? ?? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第4張圖片 ? ? ? ?

裝在箱子中的筆記本,就像電腦中存儲的文件,我們可以對其進行讀/寫,也可以把它們存放在目錄中。

?

這個指南介紹了os和shutil模塊中的相關(guān)方法。其中,os模塊主要用于與操作系統(tǒng)交互,shutil模塊則包含一些針對文件的操作。一般情況下,我們使用os創(chuàng)建目錄,使用shutil移動和復制文件。

?

Python標準庫更新:2019年2月16日新增pathlib庫

?

在 Python 3.4 版本,標準庫中增加了 pathlib 模塊,以改進文件路徑的處理;在3.6版本中,增加了更多pathlib與標準庫的其他模塊的交互,效果很好。pathlib將路徑視為對象而非字符串,這使得其在解析文件路徑上具有一定優(yōu)勢。如果你想要對pathlib有更多了解,可以閱讀 Real Python 和 pbpython 提供的介紹。雖然pathlib 很方便,但它不具備我們將要探索的一些底層功能。因此,使用 os 和shutil 方法還是有必要的。? ?

?

在進行更詳細的介紹之前,有以下幾點需要注意:


  • 本指南是基于 python3,2020年1月以后將不再支持 python 2 。

  • 在使用相關(guān)命令之前,需要在代碼開頭導入了 os 和 shutil 庫。

  • 我的示例代碼可以在GitHub上找到。

  • 請使用自己的參數(shù)替換下面引號中的參數(shù)。

?

下面, 本文將逐一介紹文件系統(tǒng)的 10 種命令方法,每個部分都會按照“方法:描述→對應的 macOS ?Shell 命令”模式進行介紹,便于大家理解。

?

一、獲取信息(Get Info)

?

  • os.getcwd():以字符串形式獲取當前工作目錄路徑 →?pwd

  • os.listdir()?:以字符串列表的形式獲取當前工作目錄的內(nèi)容→ls

  • os.walk("starting_directory_path"):返回一個生成器(generator),該生成器包含當前目錄和所有子目錄中的文件名稱及路徑信息;→沒有完全等價的shell命令,不過 ls -R 命令提供了子目錄名稱和子目錄中的文件名稱

?

二、更改信息(Change Things)

?

  • os.chdir("/absolute/or/relative/path"):更改當前的工作路徑→ cd

  • os.path.join():創(chuàng)建路徑供后續(xù)使用→ 沒有等效的命令

  • os.makedirs(“dir1 / dir2”):創(chuàng)建目錄→ mkdir - p

  • shutil.copy2("source_file_path","destination_directory_path"):復制文件或目錄→ cp

  • shutil.move("source_file_path","destination_directory_path"):移動文件或目錄→ mv

  • os.remove(“my_file_path”):刪除文件→ rm

  • shutil.rmtree(“my_directory_path”):刪除路徑及其包含的所有文件和目錄→ rm –rf

?

以上是對十個最常用、基礎(chǔ)的文件系統(tǒng)方法的初步介紹,接下來我們再深入講解一些重要的模塊和使用方法。

?

查看信息

            
              
                os.getcwd()
              
            

以字符串形式返回當前工作目錄

            
              
                os.listdir() 
              
            

以字符串列表形式返回當前目錄

            
              
                os.walk("my_start_directory")
              
            

創(chuàng)建一個生成器,用于返回關(guān)于當前目錄和子目錄的信息。在起始指定的目錄中有效。

?

os.walk() 遍歷包含的每個目錄后,都會返回下列項:


(1)當前目錄路徑(字符串類型)

(2)當前目錄下的子目錄名稱(字符串列表類型)

(3)當前目錄中的文件名稱(字符串列表類型的)

?

使用帶有for循環(huán)的os.walk()來遍歷目錄及其子目錄的內(nèi)容通常很有用。例如,下面的代碼將打印當前工作目錄的目錄和子目錄中的所有文件。

            
              
                import os	
cwd = os.getcwd()	
for dir_path, dir_names, file_names in os.walk(cwd):	
    for f in file_names:	
        print(f)
              
            

以上是獲取信息的操作。下面讓我們一起看一下更改工作目錄或移動、復制、刪除文件系統(tǒng)的命令。

? ? ? ? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第5張圖片 更改信息

            
              
                os.chdir("/absolute/or/relative/path")
              
            

此方法將當前工作路徑更改為絕對路徑或相對路徑。


如果隨后要對文件系統(tǒng)進行其他更改,在試用該方法時留意處理任何異常。否則,您可能正在刪除不希望刪除的目錄或文件。

            
              
                os.path.join()
              
            

os.path模塊提供了許多用于路徑名操作的有用方法。您可以使用它查找有關(guān)目錄名稱,或者目錄名稱的部分信息。該模塊還可以用來檢查文件或目錄是否存在。

?

os.path.join()提供將多個字符串完美連接在一起的文件路徑,而且是在大多數(shù)操作系統(tǒng)上都可以工作的路徑。該模塊文檔的描述為,該命令可以“更加智能的連接一個或多個路徑組件,返回值是路徑或路徑的任何成員路徑的連接,每個非空路徑后都有一個目錄分隔符(os.sep),最后一個除外”。

?

另外,如果使用的是Unix或macOS系統(tǒng),os.path.join()會在每個字符串之間添加一個斜杠(" / ")來創(chuàng)建路徑。如果操作系統(tǒng)需要“\”,那么join會自動使用反斜杠。

?

os.path.join()還向其他開發(fā)人員提供了創(chuàng)建路徑的明確信息。強烈建議讀者多使用這個命令,不要每次都手動添加斜杠。

            
              
                os.makedirs("dir1/dir2")
              
            

os.makedirs()能夠生成目錄。mkdir()方法也可以生成目錄,但它不生成中間目錄。所以建議使用os.makedirs()。

            
              
                shutil.copy2("source_file", "destination")
              
            

在Python中復制文件和目錄的方法有很多,但建議使用此命令。shutil.copy2()的優(yōu)勢在于,它盡可能地保留了源文件的元數(shù)據(jù)。如果你希望對文件和努力的復制有更多了解,可以閱讀這篇文章。?


?? ?? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第6張圖片 ? ? ? ?


移動文件

            
              
                shutil.move("source_file", "destination")
              
            

使用shutil.move()更改文件的位置。它使用 copy2 作為后臺參數(shù)默認值。

            
              
                os.remove("my_file_path")
              
            

當需要刪除文件時,可以使用os.remove()工具。

            
              
                shutil.rmtree("my_directory_path")
              
            

shutil.rmtree()刪除一個目錄及其中的所有文件和目錄。

? ? ? ? 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第7張圖片 ? ? ? ?

刪除文件


使用刪除函數(shù)的時候一定要多加小心!您可以使用print()將要刪除的內(nèi)容打印出來,在確定不會刪除錯誤文件后,再用相應的刪除文件函數(shù)替換print()。在此向Al Sweigart致敬,感謝他在文章《Automate the Boring Stuff with Python》中進行的討論。

?

最后我們再回顧一下整個方法。

?

10種文件系統(tǒng)方法概述


下面方法遵循這個模式:方法——描述——等效macOS Shell命令

?

獲取信息

  • os.getcwd()?——以字符串形式獲取當前工作目錄路徑——?pwd

  • os.listdir()?——以字符串列表的形式獲取當前工作目錄的內(nèi)容——ls

  • os.walk("starting_directory_path")——返回函數(shù),其中包含當前目錄和所有子目錄中的目錄和文件的名稱和路徑信息——沒有完全等價的shell命令,不過ls -R提供了子目錄名稱和子目錄中的文件名稱


改動信息

  • os.chdir("/absolute/or/relative/path")?——改變當前的工作路徑——cd

  • os.path.join()——創(chuàng)建路徑供后續(xù)使用——沒有等效CLI

  • os.makedirs (“dir1 / dir2”)——創(chuàng)建目錄——mkdir - p

  • shutil.copy2("source_file_path","destination_directory_path")——復制文件或目錄——cp

  • shutil.move("source_file_path","destination_directory_path")——移動文件或目錄——mv

  • os.remove (“my_file_path”)——刪除文件——rm

  • shutil.rmtree (“my_directory_path”)——刪除路徑及其包含的所有文件和目錄——rm –rf


以上介紹了關(guān)于Python與文件系統(tǒng)交互的一些基礎(chǔ)知識。希望大家在Ipython編輯器中多嘗試這些命令,并向其他人解釋這些方法,以更好的掌握和鞏固知識。

?

如果你想對相關(guān)內(nèi)容有更多了解,可以看看免費的電子書,或者多用Python編編代碼。關(guān)于使用Python從文件中讀寫的相關(guān)操作,請查看open函數(shù)的官方文檔。

原文鏈接:

https://towardsdatascience.com/10-python-file-system-methods-you-should-know-799f90ef13c2


(*本文為 AI科技大本營轉(zhuǎn)載文章,轉(zhuǎn)載請聯(lián)系原作者)


精彩推薦



基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法_第8張圖片

推薦閱讀

  • “愛裝X”開源組織:“教科書級”AI知識樹究竟長什么樣?

  • MNIST重生,測試集增加至60000張!

  • 基礎(chǔ)必備 | Python處理文件系統(tǒng)的10種方法

  • 500行Python代碼打造刷臉考勤系統(tǒng)

  • 前端開發(fā)20年變遷史

  • 剛出爐!AI指數(shù)報告:AI人才需求暴漲35倍,薪酬問鼎No.1

  • ARM 發(fā)布新一代CPU和GPU,實現(xiàn)20%性能提升!

  • 北漂杭漂的程序員,是如何買到第一套房子?

  • 權(quán)游播完了, 你在罵爛尾, 有人卻悄悄解鎖了新操作……


640?wx_fmt=png


點擊閱讀原文,查看更多精彩內(nèi)容。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久er这里只有精品 | 高清不卡毛片免费观看 | 中文字幕三级久久久久久 | 香蕉九九| 国产精品久久久久久久午夜片 | 热玖玖 | 久久vs国产综合色大全 | 亚洲精品乱码久久久久久 | 国产精品男人的天堂 | 久久亚洲在线 | 蕾丝视频永久在线入口香蕉 | 国产一区私人高清影院 | 欧美aa一级片 | 国产一区二区三区久久精品小说 | 日本免费成人网 | 国产一级在线免费观看 | 国产亚洲午夜精品 | 俄罗斯一级在线播放 | 久久国产精品一区 | 一及 片日本| 国农村精品国产自线拍 | 国产妇乱子伦视频免费 | 四虎最新免费观看网址 | 日本久久久久久久中文字幕 | 99在线国产 | 亚洲综合激情五月色播 | 亚洲国产精品久久久久婷婷老年 | 一级女毛片| 狠狠色噜噜狠狠狠狠色吗综合 | 久久春色| 视频一区二区欧美日韩在线 | 伊人影院在线视频 | 国产高清视频青青青在线 | 四虎影院地址 | 欧美日韩国产高清 | 奇米激情| 一区二区国产一区二区a4yy | 国产在线干 | 深夜福利免费观看 | 亚洲一级毛片在线观 | 亚洲午夜久久久精品影院视色 |