模塊講解----shutil模塊(copy、壓縮、解壓)


作用與功能

主要用於文件的copy,壓縮,解壓

導入shuitl模塊:

import shutil

 

 copy方法

 1 1、shutil.copyfileobj()  打開file1,並copy寫入file2:
 2 with open("筆記1",'r',encoding='utf-8') as f1,open('筆記2','w',encoding='utf-8') as f2:
 3     shutil.copyfileobj(f1,f2)
 4 
 5 
 6  
 7 #輸入文件名就能直接拷貝(調用copyfileobj方法)
 8 shutil.copyfile("筆記1","筆記3")
 9 
10 
11 
12 #拷貝權限,內容,組,用戶均不變:(win看不出來,linux下可以嘗試)
13 shutil.copymode("筆記1","筆記3")
14 
15 
16 
17 #拷貝狀態的信息(只拷貝權限,不創建文件),包括:mode bits,atime,mtime,flags
18 shutil.copystat("筆記1","筆記3")
19 
20 
21 
22 #拷貝文件和權限:
23 shutil.copy("筆記1","筆記3")
24 
25 
26 
27 #拷貝文件和狀態信息:(文件和權限)
28 shutil.copy2("筆記1","筆記3")
29 
30 
31 
32 
33 #遞歸的去copy文件:(copy目錄)
34 shutil.copytree(r"D:\a",r"D:\a1")
35 例如:用python腳本實現代碼發布指定線上服務器,例如svn和git在發布的時候,有些文件是不需要進行拷貝的,因襲就需要進行過濾
36 方法如下:
37 shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
38 
39 
40 
41 #遞歸的刪除目錄:(有鏈接占中目錄,刪除報錯)
42 shutil.rmtree(r"D:\a1")
43 
44 
45 
46 #移動文件:
47 shutil.move(r"D:\a",r"D:\a1")

 

壓縮和解壓縮方法

 1 1、全目壓縮:
 2 #創建壓縮包,並返回文件路徑:例如:zip  tar
 3 #創建壓縮包並返回文件路徑,例如:zip、tar
 4 #格式:shutil.make_archive(base_name,format(zip),root_dir,owner,group,logger)
 5 # base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑,
 6 # 如:www                        =>保存至當前路徑
 7 # 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
 8 # format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”
 9 # root_dir: 要壓縮的文件夾路徑(默認當前目錄)
10 # owner: 用戶,默認當前用戶
11 # group: 組,默認當前組
12 # logger: 用於記錄日志,通常是logging.Logger對象
13 #將 /Users/wupeiqi/Downloads/test 下的文件打包放置當前程序目錄
14 
15 import shutil
16 ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
17 18 #將 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目錄
19 import shutil
20 ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
21 22 #將D:\軟件\pychar\data\s13\Atm目錄下的文件打包放置在D:\軟件\pychar\data\s13\Atm_name_tar文件下
23 shutil.make_archive(r"D:\軟件\pychar\data\s13\Atm_name_tar","tar","D:\軟件\pychar\data\s13\Atm")
24 
25 ==========================================================================
26 三、解壓方法和指定文件的壓縮和解壓:
27 
28 2、Zip單個文件壓縮與解壓:(打包在壓縮)
29 (壓縮包也可以當做一個文件,想要加入壓縮文件的話可以直接寫進壓縮包里)
30 
31 2.1:#寫入指定壓縮文件(w)
32 z = zipfile.ZipFile(r'D:\軟件\pychar\data\test\node.zip', 'w')
33 z.write('筆記1')
34 z.write('筆記3')
35 z.close()
36 
37 2.2 #追加指定壓縮(a)
38 z = zipfile.ZipFile(r'D:\軟件\pychar\data\test\node.zip', 'a')
39 z.write('test.py')
40 z.write('md_sys_test.py')
41 z.close()
42 
43 
44 2.3:z.extractall()   解壓所有文件:(所有文件)
45 os.chdir(r"D:\軟件\pychar\data\test")
46 z = zipfile.ZipFile("node.zip",'r')
47 z.extractall()  
48 z.close()
49 
50 
51 2.4:z.extract('test.py')  解壓指定文件:
52 只需要傳輸字符串格式的文件名即可
53 os.chdir(r"D:\軟件\pychar\data\test")
54 z = zipfile.ZipFile("node.zip",'r')
55 for item in z.namelist():
56     if item == 'test.py':
57         z.extract('test.py')
58 z.close()
59 
60 
61 
62 
63 
64 =============================================================================================
65 3、tar單個文件壓縮與解壓:(tar只打包不壓縮)
66 3.1、寫入指定壓縮文件(w)
67 import tarfile
68 69 tar = tarfile.open(r'D:\軟件\pychar\data\test\your.tar','w')
70 tar.add(r'D:\軟件\pychar\data\test\test.py', arcname='bbs2.log')
71 tar.add(r'D:\軟件\pychar\data\test\md_sys_test.py', arcname='cmdb.log')
72 tar.close()
73 
74 3.2、添加指定壓縮文件(a)
75 tar = tarfile.open(r'D:\軟件\pychar\data\test\your.tar','a')
76 tar.add(r'D:\軟件\pychar\data\test\筆記1', arcname='node1.txt')
77 tar.add(r'D:\軟件\pychar\data\test\筆記3', arcname='node3.txt')
78 tar.close()
79 
80 
81 3.3、解壓所有文件
82 os.chdir(r"D:\軟件\pychar\data\test")
83 tar = tarfile.open('your.tar','r')
84 tar.extractall()  # 可設置解壓地址
85 tar.close()
86 
87 3.4、解壓指定文件
88 tar.getmembers():遍幣所有壓縮包內的文件對象(非文件字符串)
89 tar.getmember("node1.txt"):指定壓縮包內的某個文件
90 os.chdir(r"D:\軟件\pychar\data\test")
91 tar = tarfile.open('your.tar','r')
92 for item in tar.getmembers():
93     job = tar.getmember("node1.txt")
94     if item == job:
95         tar.extract(job)
96 tar.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM