日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

shutil python_shutil模块

發布時間:2024/9/15 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shutil python_shutil模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

## shutil模塊

shutil可以簡單地理解為sh + util,shell工具的意思。shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。

```

shutil.copy(file1,file2)

```

## 文件夾與文件操作

**1、將文件1的內容覆蓋copy給文件2:**

```

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

```

將fsrc文件內容復制至fdst文件,length為fsrc每次讀取的長度,用做緩沖區大小。

* fsrc: 源文件

* fdst: 復制至fdst文件

* length: 緩沖區大小,即fsrc每次讀取的長度

示例1

~~~

import shutil

f1 = open("1.txt",encoding="utf-8")

f2 = open("2.txt","w",encoding="utf-8")

shutil.copyfileobj(f1,f2)

~~~

示例2

```

import shutil

f1 = open("file.txt","r")

f2 = open("file_copy.txt","a+")

shutil.copyfileobj(f1,f2,length=1024)

```

**2、復制文件,不用打開文件直接用文件名進行覆蓋copy**

```

shutil.copyfile(src, dst)

```

將src文件內容復制至dst文件

* src: 源文件路徑

* dst: 復制至dst文件,若dst文件不存在,將會生成一個dst文件;若存在將會被覆蓋

* follow\_symlinks:設置為True時,若src為軟連接,則當成文件復制;如果設置為False,復制軟連接。默認為True。Python3新增參數

示例

~~~

import shutil

shutil.copyfile("file.txt","file_copy.txt")

~~~

**3.拷貝權限,內容組,用戶,均不變。**

將src文件權限復制至dst文件。文件內容,所有者和組不受影響

```

shutil.copymode(src, dst)

```

* src: 源文件路徑

* dst: 將權限復制至dst文件,dst路徑必須是真實的路徑,并且文件必須存在,否則將會報文件找不到錯誤

* follow\_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數

示例,

~~~

import shutil

shutil.copymode("file.txt","file_copy.txt")

~~~

**4.只拷貝了權限。**

將權限,上次訪問時間,上次修改時間以及src的標志復制到dst。文件內容,所有者和組不受影響

```

shutil.copystat(src, dst)

```

* src: 源文件路徑

* dst: 將權限復制至dst文件,dst路徑必須是真實的路徑,并且文件必須存在,否則將會報文件找不到錯誤

* follow\_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限、上次訪問時間,上次修改時間以及src的標志,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數

示例,

~~~

import shutil

shutil.copystat("file.txt","file_copy.txt")

~~~

**5.文件和權限都進行copy。**

將文件src復制至dst。dst可以是個目錄,會在該目錄下創建與src同名的文件,若該目錄下存在同名文件,將會報錯提示已經存在同名文件。權限會被一并復制。本質是先后調用了copyfile與copymode而已

```

shutil.copy(src, dst)

```

* src:源文件路徑

* dst:復制至dst文件夾或文件

* follow\_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數

示例

~~~

improt shutil,os

shutil.copy("file.txt","file_copy.txt")

# 或者

shutil.copy("file.txt",os.path.join(os.getcwd(),"copy"))

~~~

**6.拷貝了文件和狀態信息。**

將文件src復制至dst。dst可以是個目錄,會在該目錄下創建與src同名的文件,若該目錄下存在同名文件,將會報錯提示已經存在同名文件。權限、上次訪問時間、上次修改時間和src的標志會一并復制至dst。本質是先后調用了copyfile與copystat方法而已

```

shutil.copy2(src, dst)

```

* src:源文件路徑

* dst:復制至dst文件夾或文件

* follow\_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限、上次訪問時間,上次修改時間以及src的標志,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數

```

improt shutil,os

shutil.copy2("file.txt","file_copy.txt")

# 或者

shutil.copy2("file.txt",os.path.join(os.getcwd(),"copy"))

```

**7.遞歸copy多個目錄到指定目錄下。**

拷貝文檔樹,將src文件夾里的所有內容拷貝至dst文件夾

```

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

```

* src:源文件夾

* dst:復制至dst文件夾,該文件夾會自動創建,需保證此文件夾不存在,否則將報錯

* symlinks:是否復制軟連接,True復制軟連接,False不復制,軟連接會被當成文件復制過來,默認False

* ignore:忽略模式,可傳入`ignore_patterns()`

* copy\_function:拷貝文件的方式,可以傳入一個可執行的處理函數,默認為copy2,Python3新增參數

* ignore\_dangling\_symlinks:sysmlinks設置為False時,拷貝指向文件已刪除的軟連接時,將會報錯,如果想消除這個異常,可以設置此值為True。默認為False,Python3新增參數

示例

```

import shutil,os

folder1 = os.path.join(os.getcwd(),"aaa")

# bbb與ccc文件夾都可以不存在,會自動創建

folder2 = os.path.join(os.getcwd(),"bbb","ccc")

# 將"abc.txt","bcd.txt"忽略,不復制

shutil.copytree(folder1,folder2,ignore=shutil.ignore_patterns("abc.txt","bcd.txt")

```

忽略模式,用于配合`copytree()`方法,傳遞文件將會被忽略,不會被拷貝,

```

shutil.ignore_patterns(*patterns)

```

* patterns:文件名稱,元組

```

copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

```

**8.shutil.rmtree(目標目錄):可以遞歸刪除目錄下的目錄及文件。**

```

shutil.rmtree(path, ignore_errors=False, οnerrοr=None)

```

* ignore\_errors:是否忽略錯誤,默認False

* onerror:定義錯誤處理函數,需傳遞一個可執行的處理函數,該處理函數接收三個參數:函數、路徑和excinfo

```

import shutil,os

folder1 = os.path.join(os.getcwd(),"aaa")

shutil.rmtree(folder1)

```

**9.遞歸移動一個文件。**

```

shutil.move(源文件,指定路徑)

```

將src移動至dst目錄下。若dst目錄不存在,則效果等同于src改名為dst。若dst目錄存在,將會把src文件夾的所有內容移動至該目錄下面

* src:源文件夾或文件

* dst:移動至dst文件夾,或將文件改名為dst文件。如果src為文件夾,而dst為文件將會報錯

* copy\_function:拷貝文件的方式,可以傳入一個可執行的處理函數。默認為copy2,Python3新增參數

```

import shutil,os

# 示例一,將src文件夾移動至dst文件夾下面,如果bbb文件夾不存在,則變成了重命名操作

folder1 = os.path.join(os.getcwd(),"aaa")

folder2 = os.path.join(os.getcwd(),"bbb")

shutil.move(folder1, folder2)

# 示例二,將src文件移動至dst文件夾下面,如果bbb文件夾不存在,則變成了重命名操作

file1 = os.path.join(os.getcwd(),"aaa.txt")

folder2 = os.path.join(os.getcwd(),"bbb")

shutil.move(file1, folder2)

# 示例三,將src文件重命名為dst文件(dst文件存在,將會覆蓋)

file1 = os.path.join(os.getcwd(),"aaa.txt")

file2 = os.path.join(os.getcwd(),"bbb.txt")

shutil.move(file1, file2)

```

**10.獲取當前目錄所在硬盤使用情況。Python3新增方法**

```

disk_usage(path)

```

path:文件夾或文件路徑。windows中必須是文件夾路徑,在linux中可以是文件路徑和文件夾路徑

```

import shutil.os

path = os.path.join(os.getcwd(),"aaa")

info = shutil.disk_usage(path)

print(info) # usage(total=95089164288, used=7953104896, free=87136059392)

```

**11\. 修改路徑指向的文件或文件夾的所有者或分組。Python3新增方法**

```

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

```

* path:路徑

* user:所有者,傳遞user的值必須是真實的,否則將報錯no such user

* group:分組,傳遞group的值必須是真實的,否則將報錯no such group

```

import shutil,os

path = os.path.join(os.getcwd(),"file.txt")

shutil.chown(path,user="root",group="root")

```

**12\. 獲取給定的cmd命令的可執行文件的路徑。Python3新增方法**

```

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

```

****

****

****

示例

```

import shutil

info = shutil.which("python3")

print(info) # /usr/bin/python3

```

## 歸檔與壓縮操作

shutil還提供了創建和讀取壓縮和存檔文件的高級使用程序。內部實現主要依靠的是zipfile和tarfile模塊。

** 1.生成壓縮文件**

```

make_archive(base_name, format, root_dir, …)

```

* base\_name:壓縮文件的文件名,不允許有擴展名,因為會根據壓縮格式生成相應的擴展名

* format:壓縮格式

* root\_dir:將制定文件夾進行壓縮

```

import shutil,os

base_name = os.path.join(os.getcwd(),"aaa")

format = "zip"

root_dir = os.path.join(os.getcwd(),"aaa")

# 將會root_dir文件夾下的內容進行壓縮,生成一個aaa.zip文件

shutil.make_archive(base_name, format, root_dir)

```

**2.**獲取支持的壓縮文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3還多支持一種格式xztar

```

get_archive_formats()

```

**3.**解壓操作

```

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

```

* filename:文件路徑

* extract\_dir:解壓至的文件夾路徑。文件夾可以不存在,會自動生成

* format:解壓格式,默認為None,會根據擴展名自動選擇解壓格式

```

import shutil,os

zip_path = os.path.join(os.getcwd(),"aaa.zip")

extract_dir = os.path.join(os.getcwd(),"aaa")

shutil.unpack_archive(zip_path, extract_dir)

```

4\. 獲取支持的解壓文件格式。目前支持的有:tar、zip、gztar、bztar和xztar。Python3新增方法

```

get_unpack_formats()

```

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的shutil python_shutil模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。