python3 shutil模組

piny發表於2021-09-09

穿插一下sys模組的argv方法,它可以接收執行指令碼後面的引數

首先在指令碼里面定義如下:

import sys

print(sys.argv)

print(sys.argv[0])

print(sys.argv[1])

print(sys.argv[2])

執行指令碼:

[root@localhost ~]# python3 aa.py a b 

['aa.py', 'a', 'b', 'c']               //對應著print(sys.argv)

aa.py                           //對應著print(sys.argv[0])

a                             //對應著print(sys.argv[1])       

b                             //對應著print(sys.argv[2])


shutil模組的作用:高階的檔案、資料夾、壓縮包處理模組

1、檔案內容的複製,使用copyfileobj方法

import shutil

f1 = open("passwd","r",encoding="utf-8")

f2 = open("passwd.bak","w",encoding="utf-8")

shutil.copyfileobj(f1,f2)


還有一種比較簡單的方式:

>>> import shutil

>>> shutil.copyfile("passwd","passwd.old")      //使用copyfile方法就可直接對檔案進行復制

'passwd.old'


2、僅複製檔案的許可權,其餘屬性都不複製,前提是必須有目標檔案,如果目標檔案不存在則報錯

[root@localhost ~]# ll passwd

-rwxr-xr-x. 1 xiaoming xiaoming 1576 3月  21 14:52 passwd

[root@localhost ~]# ll passwd.bak                      //此檔案內容為空

-rw-r--r--. 1 root root 0 3月  21 14:56 passwd.bak

>>> import shutil

>>> shutil.copymode("passwd","passwd.bak")      //copymode對檔案的許可權進行複製


再進行檢視兩個檔案的屬性:

[root@localhost ~]# ll passwd

-rwxr-xr-x. 1 xiaoming xiaoming 1576 3月  21 14:52 passwd

[root@localhost ~]# ll passwd.bak                       //檔案內容為空,但是僅有許可權發生了改變

-rwxr-xr-x. 1 root root 0 3月  21 14:56 passwd.bak


3、複製檔案的所有狀態資訊,不複製檔案內容

>>> import shutil

>>> shutil.copystat("passwd","passwd.bak")


4、複製檔案和許可權,但是不複製屬主和屬組

>>> shutil.copy("passwd","passwd.bak")

'passwd.bak'


5、複製整個目錄樹

>>> import shutil

>>> shutil.copytree("/etc","/etc_new")

刪除整個目錄樹

>>> shutil.rmtree("/etc_new")


6、檔案的移動

>>> import shutil

>>> shutil.move("passwd","/tmp")

'/tmp/passwd'


7、檔案的打包

>>> shutil.make_archive("test","gztar","/etc")    //"test"為打包後的名稱,可以指定路徑;"gztar"為打包型別,還可以寫zip;"/etc"為需要打包的程式

'/root/test.tar.gz'


檔案的打包還可以使用另外一種方式

import tarfile

tar = tarfile.open("XXX.tar.gz","w")           //"XXX.tar.gz"開啟檔案的名字,也就是tar包名

tar.add("/etc/passwd",arcname="passwd")         //新增需要壓縮的檔案

tar.add("/etc/shadow",arcname="shadow")        

tar.close()

有了壓縮,那麼解壓呢?

tar = tarfile.open("XXX.tar.gz","r")          

tar.extractall("/usr/local")                //tar.extractall()可設定解壓路徑 

tar.close()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3034/viewspace-2803590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章