包含python之shutil模塊的詞條

本文目錄一覽:

Python shutil 模塊

shutil 可以看作 sh + util,即 shell 工具之意,該模塊提供了一些針對文件和文件夾的高級操作,如:拷貝、刪除、移動等,shutil 模塊是對 os 模塊的補充。

copyfileobj(fsrc, fdst, length=16*1024)

複製對象 fsrc 的內容到 fdst,如果 fdst 不存在則自動創建,length 表示緩衝大小,如果是負數表示直接複製,默認為值為 16*1024。示例如下:

shutil.copyfile(src, dst, *, follow_symlinks=True)

複製文件 src 的內容到 dst 並返回 dst,如果 dst 不存在則自動創建,src 和 dst 是字元串類型的路徑名,如果 src 和 dst 指向同一個文件,拋出 SameFileError。示例如下:

copymode(src, dst, *, follow_symlinks=True)

複製文件 src 的許可權到 dst,src 和 dst 是字元串類型的路徑名,如果 follow_symlinks 為 False 且 src 和 dst 都是符號鏈接,將修改 dst 符號鏈接文件而非源文件的許可權。示例如下:

copystat(src, dst, *, follow_symlinks=True)

複製 src 的許可權、最後訪問時間、最後修改時間以及標誌到 dst,src 和 dst 是字元串類型的路徑名,可以是文件或目錄,在Linux平台上還會複製擴展屬性。示例如下:

copy(src, dst, *, follow_symlinks=True)

複製文件 src 的內容和許可權到 dst,dst 可以是文件或文件夾,如果是文件,函數的返回值就是 dst,如果是文件夾,函數的返回值就是 src 的文件名與 dst 的路徑拼接,src 和 dst 都是字元串類型,如果 dst 指向一個文件夾,則創建與 src 同名的新文件。示例如下:

copy2(src, dst, *, follow_symlinks=True)

該方法會保留 src 的所有元數據(如創建時間、修改時間等),其他與 copy() 相同,當 follow_symlinks 為 False 且 src 為軟鏈接時,dst 將作為軟鏈接被創建並拷貝 src 的所有元數據到 dst。示例如下:

ignore_patterns(*patterns)

創建並返回一個函數,可傳遞到 copytree() 中作為 ignore 參數的值,忽略滿足匹配模式的文件和目錄。示例如下:

copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)

遞歸複製以 src 為根目錄的整個目錄樹,返回目標目錄 dst,dst 必須是不存在的目錄,它和它不存在的父目錄都將被創建,使用 copystat() 複製目錄元數據,使用 copy2() 複製文件內容和元數據。

示例如下:

rmtree(path, ignore_errors=False, onerror=None)

刪除目錄,path 必須指定一個目錄。示例如下:

move(src, dst, copy_function=copy2)

移動文件或目錄到目標位置,如果目標位置 dst 是一個存在的目錄,將 src 移動到 dst 路徑下。示例如下:

disk_usage(path)

檢測磁碟使用信息,返回值為元組。示例如下:

which(cmd, mode=os.F_OK | os.X_OK, path=None)

返回 cmd 調用的可執行文件路徑,沒有返回 None。mode:用於判斷文件是否存在或可執行,path:cmd 的查找路徑。示例如下:

chown(path, user=None, group=None)

改變指定 path 的所有者和所屬組,user 和 group 參數,可以是系統上的用戶名、組名或 uid/gid,至少需要傳遞其中一個參數。

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)

創建歸檔文件,並返回歸檔文件的名稱。

看下示例:

get_archive_formats()

返回支持的歸檔格式列表,列表中的每個元素是 (name, description) 形式的元組。示例如下:

register_archive_format(name, function, extra_args=None, description=』』)

註冊一個格式名並綁定到一個壓縮時使用的程序,function 是用於解包存檔文件的可調用函數。

unregister_archive_format(name)

從支持的歸檔格式中移除 name。

unpack_archive(filename, extract_dir=None, format=None)

解壓歸檔文件。filename:歸檔文件名稱;extract_dir:歸檔文件解壓的目標位置;format:使用指定格式的解壓器解壓歸檔文件。

register_unpack_format(name, extensions, function, extra_args=None, description=』』)

註冊格式為 name 的解壓器。

unregister_unpack_format(name)

從支持的解壓格式中移除 name。

get_unpack_formats()

返回支持的解壓格式列表,列表中的每個元素是 (name, extensions, description) 形式的元組。

get_terminal_size()

查詢終端大小。示例如下:

python裡面shutil是什麼?

shutil 是高級的文件,文件夾,壓縮包處理模塊。

1.shutil.copyfileobj(fsrc, fdst[, length])

將文件內容拷貝到另一個文件中

import shutil

shutil.copyfileobj(open(‘old.xml’,’r’), open(‘new.xml’, ‘w’))

2.shutil.copyfile(src, dst)

拷貝文件

shutil.copyfile(‘f1.log’, ‘f2.log’)

3.shutil.copymode(src, dst)

僅拷貝許可權。內容、組、用戶均不變

shutil.copymode(‘f1.log’, ‘f2.log’)

4.shutil.copystat(src, dst)

僅拷貝狀態的信息,包括:mode bits, atime, mtime, flags

shutil.copystat(‘f1.log’, ‘f2.log’)

5.shutil.copy(src, dst)

拷貝文件和許可權

shutil.copy(‘f1.log’, ‘f2.log’)

6.shutil.copy2(src, dst)

拷貝文件和狀態信息

shutil.copy2(‘f1.log’, ‘f2.log’)

7.shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)

遞歸的去拷貝文件夾

shutil.copytree(‘folder1’, ‘folder2’, ignore=shutil.ignore_patterns(‘*.pyc’, ‘tmp*’))

shutil.copytree(‘f1’, ‘f2’, symlinks=True, ignore=shutil.ignore_patterns(‘*.pyc’, ‘tmp*’))

8.shutil.rmtree(path[, ignore_errors[, onerror]])

遞歸的去刪除文件

shutil.rmtree(‘folder1’)

9.shutil.move(src, dst)

遞歸的去移動文件,它類似mv命令,其實就是重命名。

shutil.move(‘folder1’, ‘folder3’)

10.shutil.make_archive(base_name, format,…)

創建壓縮包並返迴文件路徑,例如:zip、tar

創建壓縮包並返迴文件路徑,例如:zip、tar

base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑,

如:www                        =保存至當前路徑

如:/Users/wupeiqi/www =保存至/Users/wupeiqi/

format: 壓縮包種類,「zip」, 「tar」, 「bztar」,「gztar」

root_dir: 要壓縮的文件夾路徑(默認當前目錄)

owner: 用戶,默認當前用戶

group: 組,默認當前組

logger: 用於記錄日誌,通常是logging.Logger對象

python shutil模塊函數copyfile和copy的區別

shutil.copyfile( src, dst) 從源src複製到dst中去。當然前提是目標地址是具備可寫許可權。拋出的異常信息為IOException. 如果當前的dst已存在的話就會被覆蓋掉

shutil.move( src, dst) 移動文件或重命名

shutil.copymode( src, dst) 只是會複製其許可權其他的東西是不會被複制的

shutil.copystat( src, dst) 複製許可權、最後訪問時間、最後修改時間

shutil.copy( src, dst) 複製一個文件到一個文件或一個目錄

shutil.copy2( src, dst) 在copy上的基礎上再複製文件最後訪問時間與修改時間也複製過來了,類似於cp –p的東西

shutil.copy2( src, dst) 如果兩個位置的文件系統是一樣的話相當於是rename操作,只是改名;如果是不在相同的文件系統的話就是做move操作

shutil.copytree( olddir, newdir, True/Flase)

把olddir拷貝一份newdir,如果第3個參數是True,則複製目錄時將保持文件夾下的符號連接,如果第3個參數是False,則將在複製的目錄下生成物理副本來替代符號連接

shutil.rmtree( src ) 遞歸刪除一個目錄以及目錄內的所有內容

說說在 Python 中如何複製、移動、改名以及刪除文件或文件夾

要實現複製、移動、改名以及刪除文件或文件夾,需要用到 shutil 模塊,shutil 是 shell util 的簡寫形式,表示 shell 工具。

調用 shutil.copy(source, destination) 來實現複製文件或文件夾功能,依據 destination 進行區分:

運行結果:

注意: 指定複製的文件夾必須存在,否則會拋出 FileNotFoundError。

shutil 的 copytree(source, destination) 方法會複製整個文件夾,包括它所包含的所有文件夾和文件。source

指定源文件夾,destination 指定新的文件夾。source 和 destination 入參都是字元串。該函數會返回新文件夾的路徑。destination 如果不存在,會自動創建。請看下例:

運行結果:

shutil.move(source, destination) 方法會將路徑 source 處的文件移動到路徑 destination,並返回新位置的絕對路徑的字元串。

如果 destination 指向一個文件夾, source 處的文件將移動到 destination 中, 並保持原來的文件名。

運行結果:

注意:

os 模塊中的函數,可以實現刪除一個文件或一個空文件夾。而 shutil 更強大,使用它可以刪除一個非空文件夾!

注意: 因為是永久刪除,所以使用這些函數一定要小心!建議調試程序時, 先注釋掉這些刪除方法,

然後加上 print(), 把要被刪除的文件列印出來,確認後,再執行。

列印出來的文件列表確認無誤後,再執行 os.unlink(filename) 執行刪除操作。

send2trash 模塊會將文件夾或文件發送到計算機的回收站。首先,安裝它:

安裝成功後,調用 send2trash.send2trash 方法,就可以把文件夾或文件發送到計算機的回收站。請看下例:

建議使用 send2trash.send2trash() 函數來刪除文件或文件夾,因為以後還可以從回收站還原。但這樣做,不

會釋放磁碟空間。如果我們還是希望程序釋放磁碟空間, 就要用 os 和 shutil 來刪除文件和

文件夾(記得使用之前提出的 print 技巧)。還有一點需要注意, send2trash() 函數只能將文件送到回收站, 但不能從回收站中恢復文件。

如何用python刪除一個文件

使用Python刪除文件有多種方法,但是最好的方法如下:

os.remove()刪除文件

os.unlink()刪除文件

shutil.rmtree()刪除目錄及其下面所有內容

pathlib.Path.unlink()在Python3.4及更高版本中用來刪除單個文件pathlib模塊。

os.remove()刪除文件

Python中的OS模塊提供了與操作系統進行交互的功能。OS屬於Python的標準實用程序模塊。該模塊提供了使用依賴於操作系統的功能的便捷式方法。

python中的os.remove()方法用於刪除文件路徑。此方法無法刪除目錄。如果指定的路徑是目錄,則該方法將引發OSError。

注意:可以使用os.rmdir()刪除目錄。

使用os.unlink()刪除Python文件

os.unlink()是os.remove()的別名。在Unix OS中,刪除也稱為unlink。

注意:所有功能和語法與os.unlink()和os.remove()相同。它們都用於刪除Python文件路徑。兩者都是Python標準庫的os模塊中執行刪除功能的方法。

它有兩個名稱,別名:os.unlink()和os.remove()。

為同一個函數提供兩個別名的可能原因是,該模塊的維護者認為,許多程序員可能會從C的底層編輯轉向Python,其中庫函數和底層系統調用稱為unlink(),而其他人則可能會使用rm命令或shell腳本來簡化語言。

使用shutil.rmtree()刪除Python文件

shutil.rmtree():刪除指定的目錄,所有子目錄和所有文件。此功能特別危險,因為它無需檢查即可刪除所有內容。結果,您可以使用此功能輕鬆丟失數據。

rmtree()是shutil模塊下的一種方法,該方法以遞歸方式刪除目錄及其內容。

使用pathlib.Path.unlink()刪除文件

pathlib模塊在Python3.4及更高版本中可用。如果要在Python2中使用此模塊,可以使用pip進行安裝。pathlib提供了一個面向對象的界面,用於處理不同操作系統的文件系統路徑。

要使用pathlib模塊刪除文件,請創建一個指向該文件的Path對象,然後對該對象調用unlink()方法。

Python其實很簡單 第十六章 目錄管理

為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關係,體現這種對應關係的數據結構稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問許可權、建立時間、訪問時間和文件存儲地址等內容。通過前面一章的介紹,我們已經知道在文件信息中已經包含了文件名、文件類型訪問許可權等信息,而存儲地址的信息則包含在目錄信息中。

16.1路徑

路徑通常用一個字元串來表示,可以按照路徑信息定位到一個目錄或文件。如:「C:UsersAdministratorPictures1.jpg」這個信息可以非常方便的找到這個圖片文件,「C:UsersAdministratorPictures」這個信息可以幫助我們找到更多的圖片文件。

這裡所說的「路徑」和上網時碰到的「地址」含義比較相似,互聯網就相當於將個人電腦可以訪問的範圍擴大了,互聯網中的地址也是對應某一個存儲空間的路徑,按照地址可以訪問互聯網上的信息,就如同按照路徑可以找到計算機中的文件一樣。

在Python中,可以導入 os模塊 來進行目錄操作。

1、獲取當前工作目錄getcwd()函數

例:

import os

print(os.getcwd())

運行結果:

C:UsersAdministratorAppDataLocalProgramsPythonPython38

這個路徑是當前Python IDLE所在的地址。

2、獲取文件的絕對路徑abspath()函數

abspath()函數是os模塊的子模塊path提供的一個函數。用法舉例如下:

import os

print(os.path.abspath(r’test.txt’))

運行結果:

C:UsersAdministratorAppDataLocalProgramsPythonPython38 est.txt

16.2 目錄操作類函數

1、判斷目錄是否存在exists()函數

exists()函數是os模塊的子模塊path中的函數。使用方法舉例如下:

import os

print(os.path.exists(r’C:UsersAdministratorPictures1.jpeg’))

輸出結果:

True

2、創建目錄mkdir()函數和makedirs()函數

mkdir()函數和makedirs()函數都是由os模塊提供的,下面舉例說明用法和區別。

例1:

import os

path=’d:test’

if not os.path.exists(path):

os.makedirs(path)

print(‘該文件目錄創建成功!’)

如果目錄d: est已存在,則不再創建;若不存在,則創建。

例2:

import os

path=’d:testtest1test11′

if not os.path.exists(path):

os.makedirs(path)

print(‘該文件目錄創建成功!’)

雖然目錄d: est已存在,但可以在其下繼續創建子目錄。上面的代碼可以成功地創建d: est est1 est11目錄。

mkdir()函數和makedirs()函數用法基本一樣,不同之處在於mkdir()函數只能能創建一級目錄。

3、刪除目錄函數rmdir()函數

rmdir()函數是由os模塊提供的。

例如:通過上面的例子已經建立了d: est est1 est11目錄,現在去刪除子目錄test11(此子目錄為空目錄),代碼如下:

import os

os.rmdir(‘d:testtest1test11’)

如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,並且出現Windows文件操作錯誤的提示(Python是調用操作系統命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進行如下刪除操作。

import os

os.rmdir(‘d:test’)

此時,會出現如下錯誤提示:

Traceback (most recent call last):

File “C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py”, line 10, in

os.rmdir(‘d:test’)

OSError: [WinError 145] 目錄不是空的。: ‘d:test’

4、刪除非空目錄函數rmtree()函數

rmtree()函數是由Python內置的標準模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:

import shutil

shutil.rmtree(‘d:test’)

5、遍歷目錄walk()函數

walk()函數是由os模塊提供的。

語法格式:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top是所要遍歷的目錄的地址;topdown為可選參數,為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認值為True;onerror為可選參數,用於指定異常處理方式,默認為忽略;followlinks為可選參數,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),如果為 False,則優先遍歷 top 的子目錄。

該函數的返回值為一個三元組(root,dirs,files)。root 所指的是當前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。

例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:

d: est目錄及其下的子目錄和文件

import os

path=’d:test’

tups=os.walk(path) # 函數walk()的返回值為三元組

for root,dirs,files in tups: # 遍歷這個三元組

for name in dirs: #遍歷存放目錄值的元組

print(‘dir:’,os.path.join(root,name))

for name in files: #遍歷存放文件名值的元組

print(‘file:’,os.path.join(root,name))

運行結果如下:

dir: d: est est1

dir: d: est est1 est11

dir: d: est est1新建文件夾

file: d: est est1新建文本文檔.txt

file: d: est est1 est11新建文本文檔.txt

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307058.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:06
下一篇 2025-01-02 18:06

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論