abs 絕對值函式
print(abs(-1)) print(abs(100))
round 四舍五入
奇進偶不進 n.5的情況特定發生
res = round(3.87) res = round(4.51) # res = round(2.5)列印結果 2 # res = round(3.5) 列印結果4 res = round(6.51) print(res)
sum 計算一個序列得和
lst = [1,2,3,4,34] res = sum(lst) print(res) total = 0 for i in lst: total += i print(total)
max 獲取一個序列里邊的最大值
min 獲取一個序列里邊的最小值
lst = (-100,1,2,3,4,34) res = max(lst) res = min(lst) print(res)
max / min 的高階函式的使用方式
tup = ( ("趙萬里",100) , ("趙沈陽",101) , ("孟凡偉",99) ) def func(n): # print(n) # 按照年齡找到最小值元組 return n[-1] res = min(tup,key=func) print(res) res = max(tup,key=func) print(res) dic = {"趙萬里":100,"趙沈陽":200,"孟凡偉":-5000} def func(n): # 如果是字典,默認傳遞的是鍵 # print(dic[n]) return abs(dic[n]) res = min(dic,key=func) res = max(dic,key=func) print(res)
pow 計算某個數值的x次方
如果是三個引數,前兩個運算的結果和第三個引數取余
print(pow(2,3)) print(pow(2,3,7)) print(pow(2,3,4)) print(pow(2,3,5))
range 產生指定范圍資料的可迭代物件
# 一個引數 for i in range(3): # 0 1 2 print(i) # 二個引數 for i in range(3, 8): # 3 4 5 6 7 print(i) # 三個引數 # 正向操作 for i in range(1,9,5): # 1 6 留頭舍尾 print(i) # 逆向操作 for i in range(9,1,-3): # 9 6 3
bin 將10進制資料轉化為二進制
print(bin(8))
oct 將10進制資料轉化為八進制
print(oct(8))
hex 將10進制資料轉化為16進制
print(hex(16))
chr 將ASCII編碼轉換為字符
print(chr(65))
ord 將字符轉換為ASCII編碼
print(ord("A"))
eval和exec在和第三方用戶互動時候,謹慎使用
eval 將字串當作python代碼執行
strvar = "print(123)" strvar = "int(15)" print(strvar) res = eval(strvar) print(res,type(res))
# strvar = "a=3" error eval的局限性 不能創建變數
# eval(strvar)
exec 將字串當作python代碼執行(功能更強大)
strvar = "a=3" exec(strvar) print(a) strvar = """ for i in range(10): print(i) """ exec(strvar)
repr 不轉義字符輸出字串
strvar = "D:\nython32_gx\tay14" res = repr(strvar) print(res)
input 接受輸入字串
res = input("輸入內容") print(res , type(res))
hash 生成哈希值 檔案校驗
with open("ceshi1.py",mode="r",encoding="utf-8") as fp1, open("ceshi2.py",mode="r",encoding="utf-8") as fp2: res1 = hash(fp1.read()) res2 = hash(fp2.read()) if res1 == res2: print("檔案校驗成功") else: print("檔案校驗失敗")
數學模塊 import math
ceil() 向上取整操作 (對比內置round) ***
res = math.ceil(3.01) res = math.ceil(-3.45) print(res)
floor() 向下取整操作 (對比內置round) ***
res = math.floor(3.99) res = math.floor(-3.99) print(res)
pow() 計算一個數值的N次方(結果為浮點數) (對比內置pow)
結果為浮點數,必須是兩個引數
res = math.pow(2,3) # res = math.pow(2,3,3) error print(res)
sqrt() 開平方運算(結果浮點數)
res = math.sqrt(9) print(res)
fabs() 計算一個數值的絕對值 (結果浮點數) (對比內置abs)
res = math.fabs(-1) print(res)
modf() 將一個數值拆分為整數和小數兩部分組成元組
res = math.modf(3.897) print(res)
copysign() 將引數第二個數值的正負號拷貝給第一個 (回傳一個小數)
res = math.copysign(-12,-9.1) print(res)
fsum() 將一個容器資料中的資料進行求和運算 (結果浮點數)(對比內置sum)
lst = [1,2,3,4] res = math.fsum(lst) print(res)
圓周率常數 pi ***
print(math.pi)
隨機模塊
random() 獲取隨機0-1之間的小數(左閉右開) 0<=x<1
res = random.random() print(res)
randrange() 隨機獲取指定范圍內的整數(包含開始值,不包含結束值,間隔值) ***
# 一個引數 res = random.randrange(3) print(res) # 0 1 2 # 二個引數 res = random.randrange(3,6) # 3 4 5 print(res) # 三個引數 res = random.randrange(1,9,4) # 1 5 print(res) res = random.randrange(7,3,-1) # 7 6 5 4 print(res)
randint() 隨機產生指定范圍內的隨機整數 (了解)
res = random.randint(1,3) # 1 2 3 # res = random.randint(3,5,1) error print(res)
uniform() 獲取指定范圍內的隨機小數(左閉右開) ***
res = random.uniform(0,2) # 0<= x < 2 print(res) res = random.uniform(2,0) print(res) """ 原碼決議: a = 2 , b = 0 return 2 + (0-2) * (0<=x<1) x = 0 return 2 取到 x = 1 return 0 取不到 0 < x <= 2 return a + (b-a) * self.random() """
choice() 隨機獲取序列中的值(多選一) **
lst = ["孫凱喜","王永飛","于朝志","須臾間","含稅小"] res = random.choice(lst) print(res) def mychoice(lst): index_num = random.randrange(len(lst)) return lst[index_num] print(mychoice(lst)) # lambda 改造 mychoice = lambda lst : lst[ random.randrange(len(lst)) ] print(mychoice(lst))
sample() 隨機獲取序列中的值(多選多) [回傳串列] **
tup = ("孫凱喜","王永飛","于朝志","須臾間","含稅小") res = random.sample(tup,3) print(res)
shuffle() 隨機打亂序列中的值(直接打亂原序列) **
lst = ["孫凱喜","王永飛","于朝志","須臾間","含稅小"] random.shuffle(lst) print(lst)
驗證碼效果
# 驗證碼里面有大寫字母 65 ~ 90 # 小寫字母 97 ~ 122 # 數字 0 ~ 9 def yanzhengma(): strvar = "" for i in range(4): # 大寫字母 b_c = chr(random.randrange(65,91)) # 小寫字母 s_c = chr(random.randrange(97,123)) # 數字 num = str(random.randrange(10)) # 把可能出現的資料都放到串列中,讓系統抽一個 lst = [b_c,s_c,num] # 抽完之后累計拼接在字串strvar當中 strvar += random.choice(lst) # 回圈四次拼接終止,回傳隨機碼 return strvar res = yanzhengma() print(res)
pickle 序列化/反序列化模塊
import pickle
序列化: 把不能夠直接存盤在檔案中的資料變得可存盤
反序列化: 把存盤在檔案中的資料拿出來恢復成原來的資料型別
php
serialize
unserialize
把所有的資料型別都通過pickle模塊進行序列化
lst = [1,2,3] # 錯誤案例, 檔案不能直接存盤容器 , 檔案只能存盤字串和位元組流 """ with open("lianxi1.txt",mode="w",encoding="utf-8") as fp: fp.write(1) """
dumps 把任意物件序列化成一個bytes
res = pickle.dumps(lst) print(res , type(res))
函式可以序列化么? 可以
def func(): print("我是func函式") res = pickle.dumps(func) print(res , type(res))
迭代器可以序列化么? 可以
it = iter(range(10)) res = pickle.dumps(it) print(res , type(res))
loads 把任意bytes反序列化成原來資料
res2 = pickle.loads(res) print(res2 , type(res2))
dump 把物件序列化后寫入到file-like Object(即檔案物件)
lst = [1,2,3] with open("lianxi1.txt",mode="wb") as fp: pickle.dump(lst,fp)
load 把file-like Object(即檔案物件)中的內容拿出來,反序列化成原來資料
with open("lianxi1.txt",mode="rb") as fp: res2 = pickle.load(fp) print(res2 , type(res2))
dumps 和 loads 對檔案進行寫入讀取位元組流操作
# 寫入位元組流 with open("lianxi2.txt",mode="wb+") as fp: res1 = pickle.dumps(lst) fp.write(res1) # 讀取位元組流 with open("lianxi2.txt",mode="rb+") as fp: bytes_str = fp.read() res = pickle.loads(bytes_str) print(res , type(res2))
json 序列化/反序列化模塊
json格式的資料,所有的編程語言都能識別,本身是字串
型別有要求: int float bool str list tuple dict None
json 主要應用于傳輸資料 , 序列化成字串
pickle 主要應用于存盤資料 , 序列化成二進制位元組流
json 基本用法
json => dumps 和 loads
ensure_ascii=False 顯示中文 sort_keys=True 按鍵排序
dic = {"name":"梁新宇","sex":"野味","age":22,"family":["爸爸","媽媽","姐姐"]} res = json.dumps(dic,ensure_ascii=False,sort_keys=True) print(res , type(res)) dic = json.loads(res) print(dic , type(dic))
json => dump 和 load
with open("lianxi3.json",mode="w",encoding="utf-8") as fp: json.dump(dic,fp,ensure_ascii=False) with open("lianxi3.json",mode="r",encoding="utf-8") as fp: dic = json.load(fp) print(dic , type(dic))
json 和 pickle 之間的區別
1.json
json 連續dump資料 , 但是不能連續load資料 , 是一次性獲取所有內容進行反序列化.
dic1 = {"a":1,"b":2}
dic2 = {"c":3,"d":4}
with open("lianxi4.json",mode="w",encoding="utf-8") as fp:
json.dump(dic1,fp)
fp.write("\n")
json.dump(dic2,fp)
fp.write("\n")
# 不能連續load,是一次性獲取所有資料 , error
"""
with open("lianxi4.json",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)
"""
# 解決辦法 loads(分開讀取)
with open("lianxi4.json",mode="r",encoding="utf-8") as fp:
for line in fp:
dic = json.loads(line)
print(dic,type(dic))
2.pickle
""" with open("lianxi5.pkl",mode="rb") as fp: dic1 = pickle.load(fp) dic2 = pickle.load(fp) print(dic1) print(dic2) """ # 方法二 (擴展) """try .. except .. 把又可能報錯的代碼放到try代碼塊中,如果出現例外執行except分支,來抑制報錯""" # 一次性拿出所有load出來的檔案資料 try: with open("lianxi5.pkl",mode="rb") as fp: while True: dic = pickle.load(fp) print(dic) except: pass
json 和 pickle 兩個模塊的區別:
(1)json序列化之后的資料型別是str,所有編程語言都識別,
但是僅限于(int float bool)(str list tuple dict None)
json不能連續load,只能一次性拿出所有資料
(2)pickle序列化之后的資料型別是bytes,用于資料存盤
所有資料型別都可轉化,但僅限于python之間的存盤傳輸.
pickle可以連續load,多套資料放到同一個檔案中
time 時間模塊
time() 獲取本地時間戳
res = time.time() print(res)
localtime <=> mktime => ctime
localtime() 獲取本地時間元組 (引數是時間戳,默認當前)
# 默認當前時間元組 ttp = time.localtime() print(ttp) # 指定具體的時間戳 ttp = time.localtime(1601360000) print(ttp)
mktime() 通過時間元組獲取時間戳 (引數是時間元組)
res1 = time.mktime(ttp) print(res1)
ctime() 獲取本地時間字串(引數是時間戳,默認當前)
# 默認當前時間戳 res = time.ctime() print(res) # 指定具體的時間戳 res = time.ctime(res1) print(res)
asctime() 通過時間元組獲取時間字串(引數是時間元組) (了解)
只能通過手動的形式來調星期
ttp = (2020,9,29,16,48,30,0,0,0) res = time.asctime(ttp) print(res)
mktime 配合 ctime來取代asctime (推薦)
自動識別當前是周幾
res = time.mktime(ttp) strvar = time.ctime(res) print(strvar)
sleep() 程式睡眠等待
time.sleep(10) print("我睡醒了")
strftime() 格式化時間字串(格式化字串,時間元祖)
linux支持中文 windows不支持
strvar = time.strftime("%Y-%m-%d %H:%M:%S") strvar = time.strftime("%Y-%m-%d %H:%M:%S 是杜蘭特的死神的生日") print(strvar) strvar = time.strftime("%Y-%m-%d %H:%M:%S",(2020,10,31,10,10,10,0,0,0)) print(strvar)
strptime() 將時間字串通過指定格式提取到時間元組中(時間字串,格式化字串)
注意:替換時間格式化標簽時,必須嚴絲合縫.不能隨便加空格或特殊字符
ttp = time.strptime("2020年的9月29號是死神杜蘭特的生日,晚上20點30分40秒準備轟趴派隊","%Y年的%m月%d號是死神杜蘭特的生日,晚上%H點%M分%S秒準備轟趴派隊") print(ttp)
strftime : 把時間元組 => 字串
strptime : 把字串 => 時間元組
perf_counter() 用于計算程式運行的時間 (了解)
# startime = time.perf_counter() startime = time.time() for i in range(10000000): pass # endtime = time.perf_counter() endtime = time.time() print("中間用時:",endtime-startime)
zipfile 壓縮模塊
import zipfile
(1) 壓縮檔案
zipfile.ZIP_DEFLATED 壓縮減少空間
# 創建壓縮包 zf = zipfile.ZipFile("ceshi111.zip","w", zipfile.ZIP_DEFLATED) # 寫入檔案 '''write(路徑,別名)''' zf.write("/bin/bash","bash") zf.write("/bin/bunzip2","bunzip2") zf.write("/bin/cat","tmp/cat") # 關閉檔案 zf.close()
(2) 解壓檔案
zf = zipfile.ZipFile("ceshi111.zip","r") # 解壓單個檔案 """extract(檔案,路徑)""" # zf.extract("bash","ceshi111") # 解壓所有檔案 zf.extractall("ceshi222") zf.close()
(3) 追加檔案
zf = zipfile.ZipFile("ceshi111.zip","a", zipfile.ZIP_DEFLATED) zf.write("/bin/chmod","chmod") zf.close() # 用with來簡化操作 with zipfile.ZipFile("ceshi111.zip","a", zipfile.ZIP_DEFLATED) as zf: zf.write("/bin/chmod","chmod123456")
(4) 查看檔案
with zipfile.ZipFile("ceshi111.zip","r") as zf: lst = zf.namelist() print(lst)
進度條
import time """ [###################################] 100% [############## ] 40% [############################# ] 80% """ # (1) 定義進度條樣式 """ print("[%-50s]" % ("#")) print("[%-50s]" % ("######################")) print("[%-50s]" % ("##############################################")) """ # (2) 讓進度條動起來 """ strvar = "" for i in range(50): time.sleep(0.1) strvar += "#" print("\r[%-50s]" % (strvar) , end="") """ # (3) 加上百分比 # 顯示進度條 def myprocess(percent): if percent > 1: percent = 1 # 列印對應的#號數量 * "#" => 字串#號效果 strvar = int(percent * 50) * "#" # 進行列印 %% => % print("\r[%-50s] %d%%" % (strvar , percent * 100) , end="") # 接受資料 recv_size = 0 total_size = 1000 while recv_size < total_size: time.sleep(0.01) recv_size += 10 percent = recv_size/total_size # 0.5 myprocess(percent)
os 模塊
import os
system() 在python中執行系統命令
os.system("ifconfig") # linux # os.system("ipconfig") windows # os.system("rm -rf ceshi.txt")
popen() 執行系統命令回傳物件,通過read方法讀出字串
obj = os.popen("ipconfig") print(obj) print(obj.read())
listdir() 獲取指定檔案夾中所有內容的名稱串列 ***
lst = os.listdir() print(lst)
getcwd() 獲取當前檔案所在的默認路徑 ***
# 路徑 res = os.getcwd() print(res) # 路徑 + 檔案名 *** print(__file__)
chdir() 修改當前檔案作業的默認路徑
os.chdir("/home/wangwen/mywork") os.system("touch 2.txt")
environ 獲取或修改環境變數
""" [windows] (1)右鍵qq屬性找路徑 (2)右鍵我的電腦屬性->高級系統設定->環境變數->path 打開環境變數添加對應路徑 (3)cmd => QQScLauncher [linux] (1)在家目錄中創建個檔案夾,里面創建個檔案wangwen,寫入ifconfig (2)增加wangwen的可執行權限 chmod 777 wangwen 測驗一下 sudo ./wangwen (3)添加環境變數在os.environ["PATH"] 中拼接wangwen所有的絕對路徑 (4)os.system("wangwen") 總結: 環境變數path的好處是,讓系統自動的找到該命令的實際路徑進行執行; """ print(os.environ["PATH"]) """ environ( { 一堆路徑} ) """ os.environ["PATH"] += ":/home/wangwen/mywork" os.system("wangwen")
--os 模塊屬性
name 獲取系統標識 linux,mac ->posix windows -> nt
print(os.name)
sep 獲取路徑分割符號 linux,mac -> / window-> \ ***
print(os.sep)
linesep 獲取系統的換行符號 linux,mac -> \n window->\r\n 或 \n
print(repr(os.linesep))
os 模塊 (檔案操作) 新建/洗掉/
import os os.chdir("/路徑/路徑/路徑")
-- os模塊具有 新建/洗掉/
os.mknod 創建檔案
os.mknod("1.txt")
os.remove 洗掉檔案
os.remove("1.txt")
os.mkdir 創建目錄(檔案夾)
os.mkdir("ceshi111")
os.rmdir 洗掉目錄(檔案夾)
os.rmdir("ceshi111")
os.rename 對檔案,目錄重命名
os.rename("2.txt","3.txt")
os.makedirs 遞回創建檔案夾
os.makedirs("a/b/c/d/e/f")
os.removedirs 遞回洗掉檔案夾(空檔案夾)
os.removedirs("a/b/c/d/e/f")
shutil模塊 復制/移動/
import shutil
copyfileobj(fsrc, fdst[, length=16*1024]) 復制檔案 (length的單位是字符(表達一次讀多少字符/位元組))
fp_src = https://www.cnblogs.com/shuaiyao666/p/open("3.txt",mode="r",encoding="utf-8") fp_dst = open("4.txt",mode="w",encoding="utf-8") shutil.copyfileobj(fp_src,fp_dst)
copyfile(src,dst) #單純的僅復制檔案內容 , 底層呼叫了 copyfileobj
shutil.copyfile("4.txt","5.txt")
copymode(src,dst) #單純的僅復制檔案權限 , 不包括內容 (虛擬機共享目錄都是默認777)
注意: 要先有兩個檔案才可以,不會默認創建
copystat(src,dst) #復制所有狀態資訊,包括權限,組,用戶,修改時間等,不包括內容
shutil.copystat("4.txt","5.txt")
copy(src,dst) #復制檔案權限和內容
shutil.copy("5.txt","6.py")
copy2(src,dst) #復制檔案權限和內容,還包括權限,組,用戶,時間等
shutil.copy2("5.txt","7.py")
copytree(src,dst) #拷貝檔案夾里所有內容(遞回拷貝)
shutil.copytree("lianxi","lianxi2")
rmtree(path) #洗掉當前檔案夾及其中所有內容(遞回洗掉)
shutil.rmtree("lianxi2")
move(path1,paht2) #移動檔案或者檔案夾
# shutil.move("7.py","lianxi/888.php") shutil.move("7.py","/888.php")
os.path 路徑模塊
import os
pathvar = "/home/wangwen/mywork/ceshi.py" pathvar = __file__
basename() 回傳檔案名部分
res = os.path.basename(pathvar) print(res)
dirname() 回傳路徑部分
res = os.path.dirname(pathvar) print(res)
split() 將路徑拆分成單獨的檔案部分和路徑部分 組合成一個元組
print(os.path.split(__file__))
join() 將多個路徑和檔案組成新的路徑 可以自動通過不同的系統加不同的斜杠 linux / windows\ ***
path1 = "home" path2 = "wangwen" path3 = "mywork" pathvar = path1 + os.sep + path2 + os.sep + path3 print(pathvar) # 用join改造 path_new = os.path.join(path1,path2,path3) print(path_new)
splitext() 將路徑分割為后綴和其他部分 (了解)
pathvar = "/home/wangwen/mywork/ceshi.py" print( os.path.splitext(pathvar) ) print( pathvar.split(".")[-1] )
getsize() 獲取檔案的大小 ***
# pathvar = os.path.dirname(__file__) # 方法一 pathvar = os.getcwd() # 方法二 path_new = os.path.join(pathvar,"2.py") print(path_new)
計算檔案大小
res = os.path.getsize(path_new) print(pathvar) res = os.path.getsize("/mnt/hgfs/python32_gx/day14") print(res)
isdir() 檢測路徑是否是一個檔案夾 ***
res = os.path.isdir("/mnt/hgfs/python32_gx/day14") print(res)
isfile() 檢測路徑是否是一個檔案 ***
res = os.path.isfile("/mnt/hgfs/python32_gx/day16/1.py") print(res)
islink() 檢測路徑數否是一個鏈接
res = os.path.islink("/home/wangwen/mywork/1122.py") print(res)
getctime() [windows]檔案的創建時間,[linux]權限的改動時間(回傳時間戳)
import time
import time res = os.path.getctime("/home/wangwen/mywork/4.txt")
getmtime() 獲取檔案最后一次修改時間(回傳時間戳)
res = os.path.getmtime("/home/wangwen/mywork/4.txt")
getatime() 獲取檔案最后一次訪問時間(回傳時間戳)
res = os.path.getatime("/home/wangwen/mywork/4.txt") print(res) print(time.ctime(res))
exists() 檢測指定的路徑是否存在 ***
res = os.path.exists("/home/wangwen/mywork/4.txt") # res = os.path.exists("4.txt")
isabs() 檢測一個路徑是否是絕對路徑
res = os.path.isabs("2.py") print(res)
abspath() 將相對路徑轉化為絕對路徑
res = os.path.abspath("2.py") print(res) pathvar = "2.py" if not os.path.isabs(pathvar): abs_path = os.path.abspath("2.py") print(abs_path)
tarfile 壓縮模塊
import tarfile
(1) 壓縮檔案
1.只是單純的打包.
# 創建壓縮包 tf = tarfile.open("ceshi0930_0.tar","w",encoding="utf-8") # 寫入檔案 """add(路徑,別名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 關閉檔案 tf.close() # 378880
2.使用gz演算法壓縮
tf = tarfile.open("ceshi0930_1.tar.gz","w:gz",encoding="utf-8") # 寫入檔案 """add(路徑,別名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 關閉檔案 tf.close() # 180413
3.使用bz2演算法壓縮
tf = tarfile.open("ceshi0930_2.tar.bz2","w:bz2",encoding="utf-8") # 寫入檔案 """add(路徑,別名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 關閉檔案 tf.close() # 163261
(2) 解壓檔案
tf = tarfile.open("ceshi0930_1.tar.gz","r",encoding="utf-8") """ extract(檔案,路徑) 解壓單個檔案""" tf.extract("chown","ceshi0930_1") """ extract(路徑) 解壓所有檔案""" tf.extractall("ceshi0930_1_2") tf.close()
(3) 追加檔案
對已經壓縮過的包無法進行追加檔案,只能是沒有壓縮過的包進行追加檔案
tf = tarfile.open("ceshi0930_0.tar","a",encoding="utf-8") tf.add("/bin/mkdir","mkdir") tf.close() # 使用with進行改造 with tarfile.open("ceshi0930_0.tar","a",encoding="utf-8") as tf: tf.add("/bin/mkdir","mkdir234")
(4) 查看檔案
with tarfile.open("ceshi0930_0.tar","r",encoding="utf-8") as tf: lst = tf.getnames() print(lst)
追加檔案到壓縮包中在壓縮
import os,shutil """ 1.把已經壓縮的包進行解壓 2.把要追加的內容放進去 3.過濾檔案重新壓縮 """ # 記錄壓縮包所在的絕對路徑 pathvar1 = os.path.abspath("ceshi0930_2.tar.bz2") # 要解壓到哪個檔案夾中(絕對路徑) pathvar2 = os.path.join( os.getcwd() , "ceshi0930_2" ) print(pathvar1)# /mnt/hgfs/python32_gx/day16/ceshi0930_2.tar.bz2 print(pathvar2)# /mnt/hgfs/python32_gx/day16/ceshi0930_2 # 1.把已經壓縮的包進行解壓 with tarfile.open(pathvar1,"r",encoding="utf-8") as tf: tf.extractall(pathvar2) # 2.把要追加的內容放進去 shutil.copy("/bin/echo" , pathvar2) # 3.過濾檔案重新壓縮 # 查看檔案夾當中有什么檔案 lst = os.listdir(pathvar2) print(lst) # ['chown', 'cp', 'echo', 'tmp'] with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf: for i in lst: if i != "chown": # 拼湊成完整的絕對路徑 abs_path = os.path.join(pathvar2,i) # 剩下的都要壓縮 """add(路徑,別名)""" tf.add(abs_path,i) """ /mnt/hgfs/python32_gx/day16/ceshi0930_2/chown /mnt/hgfs/python32_gx/day16/ceshi0930_2/cp /mnt/hgfs/python32_gx/day16/ceshi0930_2/echo tf.add("/bin/chown","chown") """
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439135.html
標籤:Python
上一篇:Java 雜記
下一篇:python函式快查快用
