0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Python來實(shí)現(xiàn)文件系統(tǒng)的操作功能

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 14:27 ? 次閱讀

近幾年隨著Python的熱度不斷上漲,人們漸漸使用這門編程語言來進(jìn)行一些自動化操作,以節(jié)省重復(fù)勞動帶來的效率低下,那么必定會涉及到對 文件系統(tǒng)的操作 ,包括文件的增、刪、改、查等等,今天小編就來介紹一下如何用Python來實(shí)現(xiàn)這些功能

輸出當(dāng)前的路徑

我們可以通過Python當(dāng)中的OS庫來獲取當(dāng)前文件所在的位置

import os
os.getcwd()

路徑的拼接

我們通過os.path.join()方法來實(shí)現(xiàn)

os.path.join('output', 'Book1.xlsx')

output

outputBook1.xlsx

確認(rèn)某文件夾或者是文件是否存在

我們先來看如何來確認(rèn)文件夾是否存在,同樣也是通過OS模塊

os.path.exists('directory_name')

同樣的道理,要是我們查看一下某個文件是否存在的時(shí)候,可以這么做

os.path.exists('path/file_name')

建立文件夾目錄

然后我們來看一下如何新建一個文件夾

os.mkdir("文件夾名稱")

當(dāng)然要是文件夾目錄已經(jīng)提前存在的情況下,上述的代碼自然會報(bào)錯,所以我們通常會先檢查一下是否已經(jīng)存在

if not os.path.exists('文件夾名稱'):
    os.mkdir('文件夾名稱')

當(dāng)然我們有時(shí)候需要在已建的文件夾下創(chuàng)建子文件夾,例如下圖

圖片

這個時(shí)候要是引用os.mkdir()方法或許會稍顯繁瑣,這時(shí)我們可以通過os.mkdirs()方法來實(shí)現(xiàn)

os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

羅列出當(dāng)前目錄下所包含的所有文件

代碼如下

os.listdir('文件夾名稱')

但是有時(shí)候我們可能想例如搜尋一下當(dāng)前目錄下的所有文件中以“py”結(jié)尾的文件,我們可以通過通配符來實(shí)現(xiàn),代碼如下

list(glob(os.path.join('.', '*.py')))

上面提到的glob模塊能夠快速查找我們想要的目錄和文件,它支持***、?[]這四個通配符

移動文件

要是我們想在不同的目錄文件夾之下移動文件,該怎么操作呢?這里我們介紹Python當(dāng)中的shutil模塊,假設(shè)我們想要將當(dāng)前目錄下的幾個csv文件移動到“test_dir”目錄文件夾之下,代碼如下

import shutil

for file in list(glob(os.path.join('.', '*.csv'))):
    shutil.move(file, 'test_dir')

復(fù)制文件

當(dāng)我們想要復(fù)制文件的時(shí)候,也可以使用shutil模塊,例如我們想要將幾個“test_dir”目錄文件夾下的csv文件復(fù)制到“output”目錄文件夾之下,代碼如下

shutil.copy(os.path.join('test_dir', 'data.csv'), 'output')

除此之外,我們還能夠?qū)φ迟N過去的文件重命名,代碼如下

shutil.copy(os.path.join('test_dir', 'data.csv'),
            os.path.join('output', 'data_2.csv'))

刪除文件

我們來看一下刪除文件該如何實(shí)現(xiàn)?os.remove()方法可以完成刪除文件的功能,

os.remove(os.path.join('output', 'data_2.csv'))

當(dāng)我們想要刪除一整個目錄文件夾的時(shí)候,可以使用os.rmdir()方法,當(dāng)然只僅限于是空的目錄文件夾

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"))

創(chuàng)建和解壓壓縮包

談及到操作壓縮包相關(guān)的內(nèi)容,就不得不說zipobj這個模塊了

  • 創(chuàng)建一個壓縮包

這里我們要用到的是zipfile模塊當(dāng)中的write()方法

file_lists = list(glob(os.path.join('.', '*.xlsx')))

with zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip", "w") as zipobj:
    for file in file_lists:
        zipobj.write(file)
  • 讀取壓縮包當(dāng)中的文件信息

通過zipfile模塊當(dāng)中的namelist()方法來實(shí)現(xiàn)

with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    print(zipobj.namelist())

output

['Book1.xlsx', 'supermarkt_sales.xlsx']

可以看到輸出的就是上次我們打包的幾個excel文件

  • 將壓縮包當(dāng)中的單個文件,解壓出來

通過zipfile模塊當(dāng)中的extract()方法來實(shí)現(xiàn)

dst = "output"

with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    zipobj.extract("Book1.xlsx",dst)

上述代碼的用意就是將壓縮包當(dāng)中的“Book1.xlsx”文件解壓至“output”目錄文件夾下

  • 將壓縮包中的所有文件,都解壓出來

通過zipfile模塊當(dāng)中的extractall()方法來實(shí)現(xiàn),代碼如下

dst = "output"

with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    zipobj.extractall(dst)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1929

    瀏覽量

    34539
  • 文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    284

    瀏覽量

    19871
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68230
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評論

    相關(guān)推薦

    Linux文件系統(tǒng)簡介

    任何一個操作系統(tǒng)中,文件管理是其基本功能之一,而文件的管理是由文件系統(tǒng)完成的。
    發(fā)表于 04-15 11:46 ?2614次閱讀
    Linux<b class='flag-5'>文件系統(tǒng)</b>簡介

    談?wù)勈裁词?b class='flag-5'>文件系統(tǒng) 文件系統(tǒng)功能與特點(diǎn)

    文件系統(tǒng)的應(yīng)用非常廣泛,同時(shí)種類也是特別的多,并且不同平臺也會使用不同性能和特點(diǎn)的文件系統(tǒng),比如查找效率、數(shù)據(jù)安全等級等等,如下面windows使用的NTFS:
    發(fā)表于 08-30 09:50 ?2648次閱讀
    談?wù)勈裁词?b class='flag-5'>文件系統(tǒng)</b> <b class='flag-5'>文件系統(tǒng)</b>的<b class='flag-5'>功能</b>與特點(diǎn)

    車載MP3中Flash文件系統(tǒng)的設(shè)計(jì)與應(yīng)用

    基于Flash 存儲器的特點(diǎn),詳細(xì)介紹適合于車載MP3 的Flash 文件系統(tǒng)(包括Flash存儲管理系統(tǒng)和FAT 文件系統(tǒng)) 的具體設(shè)計(jì)。利用Flash 文件系統(tǒng)
    發(fā)表于 05-16 13:54 ?11次下載

    基于C51的數(shù)據(jù)存儲器文件系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)

    本文介紹了一種基于C51編程的文件系統(tǒng)設(shè)計(jì)方法和寫文件的算法及過程。采用FAT1 6文件系統(tǒng)的設(shè)計(jì)思路,實(shí)現(xiàn)文件系統(tǒng)的打開、讀寫、刪除等基
    發(fā)表于 12-04 16:02 ?26次下載

    文件系統(tǒng)管理操作

    為了方便用戶對設(shè)備存儲設(shè)備進(jìn)行有效的管理,設(shè)備提供了文件系統(tǒng)功能,實(shí)現(xiàn)文件和目錄的訪問管理:用戶可以通過命令行對文件進(jìn)行創(chuàng)建、移動、拷貝、
    發(fā)表于 08-30 15:55 ?0次下載

    使用RT-Thread文件系統(tǒng)

    了解了文件系統(tǒng)的一些常用命令之后,下面帶領(lǐng)大家通過運(yùn)行文件系統(tǒng)的一些示例程序,熟悉文件系統(tǒng)的基本操作。示例程序通過使用一些 DFS 的 A
    的頭像 發(fā)表于 11-07 10:40 ?8700次閱讀

    嵌入式Linux常用文件系統(tǒng)

    Linux支持很多文件系統(tǒng),在選擇時(shí)應(yīng)根據(jù)應(yīng)用的功能選擇文件系統(tǒng) 內(nèi)核只認(rèn)識VFS(虛擬文件系統(tǒng)),不同的文件系統(tǒng)
    發(fā)表于 05-04 17:19 ?2365次閱讀
    嵌入式Linux常用<b class='flag-5'>文件系統(tǒng)</b>

    linux文件系統(tǒng)中的虛擬文件系統(tǒng)設(shè)計(jì)詳解

    Linux 中允許眾多不同的文件系統(tǒng)共存,如 ext2, ext3, vfat 等。通過使用同一套文件 I/O 系統(tǒng) 調(diào)用即可對 Linux 中的任意文件進(jìn)行
    發(fā)表于 04-02 14:37 ?1784次閱讀
    linux<b class='flag-5'>文件系統(tǒng)</b>中的虛擬<b class='flag-5'>文件系統(tǒng)</b>設(shè)計(jì)詳解

    Linux文件系統(tǒng)解析

    在 Linux 中,最直觀、最可見的部分就是 文件系統(tǒng)(file system)。下面我們就來一起探討一下關(guān)于 Linux 中國的文件系統(tǒng),系統(tǒng)調(diào)用以及文件系統(tǒng)
    的頭像 發(fā)表于 09-16 11:29 ?2425次閱讀
    Linux<b class='flag-5'>文件系統(tǒng)</b>解析

    文件系統(tǒng)中的日志系統(tǒng)是如何實(shí)現(xiàn)

    因?yàn)?b class='flag-5'>文件系統(tǒng)會涉及對磁盤的多次寫操作,如果在寫的過程中系統(tǒng)崩潰了,就會使得磁盤上的文件系統(tǒng)處于不一致的錯誤狀態(tài)。 日志就是設(shè)計(jì)解決因?yàn)?/div>
    的頭像 發(fā)表于 09-29 11:04 ?2157次閱讀
    <b class='flag-5'>文件系統(tǒng)</b>中的日志<b class='flag-5'>系統(tǒng)</b>是如何<b class='flag-5'>實(shí)現(xiàn)</b>的

    xv6的文件系統(tǒng)是如何實(shí)現(xiàn)

    文件系統(tǒng) 。本文直接來看 xv6 的文件系統(tǒng)這部分是如何實(shí)現(xiàn)的。 文件系統(tǒng)布局 再來系統(tǒng)的看看 xv6
    的頭像 發(fā)表于 10-12 18:00 ?2427次閱讀
     xv6的<b class='flag-5'>文件系統(tǒng)</b>是如何<b class='flag-5'>實(shí)現(xiàn)</b>的

    何用Python操作Excel文件

    今天小編介紹一下如何用Python操作Excel文件,當(dāng)中需要用到的模塊叫做openpyxl
    發(fā)表于 08-05 11:07 ?973次閱讀

    Linux的文件系統(tǒng)特點(diǎn)

    ,近期經(jīng)常被讀取和寫入,文件系統(tǒng)應(yīng)該有緩存層。 文件應(yīng)該用文件夾的形式組織起來,方便管理和查詢。 Linux內(nèi)核要在自己的內(nèi)存里面維護(hù)一套數(shù)據(jù)結(jié)構(gòu),保存哪些
    的頭像 發(fā)表于 11-09 14:48 ?1098次閱讀
    Linux的<b class='flag-5'>文件系統(tǒng)</b>特點(diǎn)

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python
    的頭像 發(fā)表于 07-18 14:53 ?336次閱讀

    如何修改buildroot和debian文件系統(tǒng)

    本文檔主要介紹在沒有編譯環(huán)境的情況下,如何修改buildroot和debian文件系統(tǒng)方法,如在buildroot文件系統(tǒng)中添加文件、修改目錄等文件
    的頭像 發(fā)表于 07-22 17:46 ?398次閱讀
    如何修改buildroot和debian<b class='flag-5'>文件系統(tǒng)</b>