1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【Python】9個必知的Python操作文件/文件夾方法

        共 2699字,需瀏覽 6分鐘

         ·

        2021-12-14 09:09

        近幾年隨著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

        output\Book1.xlsx

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

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

        os.path.exists('directory_name')

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

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

        建立文件夾目錄

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

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

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

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

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

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

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

        代碼如下

        os.listdir('文件夾名稱')
        但是有時候我們可能想例如搜尋一下當(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ù)制文件的時候,也可以使用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)我們想要刪除一整個目錄文件夾的時候,可以使用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)
        往期精彩回顧




        站qq群955171419,加入微信群請掃碼:
        瀏覽 52
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            小黄片免费 | 欧美男男激情 | 成人国产三级 | 日韩黄动漫 | 小骚逼直播| 免费无码婬片AAAA片蜜桃 | 亚洲精品午夜一区二区三区三区 | 秋霞电影院午夜仑片 | 91成人视频在线观看 | 日本午夜电影在线观看 |