如何自動解壓並刪除zip?
- 如何解壓 → 使用內置模塊來實現(shutil.unpack_archive)
- 如何刪除zip → 使用內置模塊os來實現(os.remove)
- 如何監測zip的出現 → 如何判斷某文件是zip(s.split('.'[-1]) / 如何讓函數每一秒都執行(while True)
以下代碼素材自取:鏈接:https://pan.baidu.com/s/1t6i5W0jATSdze3sPAe4sNg 提取碼:0npb
import os import shutil import time def scan_file(): for f in os.listdir(): #由於這里是當前路徑,所以需要把這個代碼文件和你要處理的文件放到同一個文件夾里 if f.endswith('.zip'): return f def unzip_it(f): folder_name = f.split('.')[0] target_path = os.path.join('.',folder_name) os.makedirs(target_path) shutil.unpack_archive(f,target_path) def delete(f): os.remove(f) time.sleep(2) if __name__ == '__main__': while True: zip_file = scan_file() if zip_file: unzip_it(zip_file) delete(zip_file) time.sleep(3)
以下代碼素材自取:鏈接:https://pan.baidu.com/s/1PM9vl6LWjevuzqBHoglBzw 提取碼:j0g4
# 監測 image 文件夾,如果包含的文件大於等於 5 個,則將這些文件壓縮到 archive1.zip 文件中,並刪除這些文件。當再次監測到文件多於 5 個的時候,生成 archive2.zip 壓縮包,以此類推。 # coding:utf-8 from shutil import make_archive import os import time # 指定需要監測的文件夾 image_path = './image' # 指定壓縮包存放的文件夾 output_path = './output' # 記錄生成了多少個壓縮包 zip_count = 0 # 利用while True使程序持續運行 while True: files = os.listdir(image_path) # files變量中存儲了路徑下所有文件的文件名,len()函數可以獲取list變量包含多少個元素 # files_count即為路徑下的文件數 files_count = len(files) if files_count >= 5: zip_count = zip_count + 1 # 指定壓縮包的名稱以及路徑 zip_name = os.path.join(output_path, 'archive' + str(zip_count)) # 壓縮文件 make_archive(zip_name, 'zip', image_path) # 刪除壓縮過的文件 for f in files: os.remove(os.path.join(image_path, f)) # 休眠1秒,達到每1秒監測一次的效果 time.sleep(1)