一、起因

前天在公众号上,看到一篇如何用python偷偷拷贝别人U盘内容的文章推送,感觉这个想法挺有意思的,可惜是用的是linux系统,而且移动硬盘的盘符也是写死的,不够灵活,于是就自己动手写了一个demo。

demo 的基本功能是 将U盘的所有内容拷贝到电脑上的指定位置,或者 将电脑上的指定文件拷贝到 U盘上。

二、代码

  

import os, shutil, psutil
from datetime import datetime # 检测U盘并返回盘符
def get_udisk():
"""
:return: 返回U盘盘符
"""
disks = psutil.disk_partitions(all=False) # 获取磁盘完整信息
for disk in disks:
disk = str(disk)
if disk.find("removable") > -1:
l = disk.find("',")
udisk = (disk[18:l])
return udisk
print("未检测到U盘插入!") # 检测目录是否有文件存在
def has_file(path):
"""
:param path: 目标路径
:return:
"""
for parent, dir_names, file_names in os.walk(path):
if file_names:
return True # 复制文件
def backup(target, backup_path):
"""
:param target: 目标路径
:param backup_path: 备份路径
:return:
"""
# 如果目标不存在文件,则没有必要执行复制操作
if not has_file(target):
print("'{0}' 目录下不存在文件!".format(target))
return # 备份文件名、路径
backup_file = "backup_" + datetime.now().strftime("%Y%m%d%H%M%S")
backup_file_path = backup_path + '\\' +backup_file # 已存在备份就删除它
if os.path.exists(backup_file_path):
shutil.rmtree(backup_file_path) # 备份文件
if os.path.exists(target):
shutil.copytree(target,os.path.join(backup_path, backup_file))
print("已成功备份!") def main(target, isBackup):
udisk = get_udisk()
if udisk:
if isBackup:
backup(target=udisk, backup_path=target) # 从U盘备份到target
else:
backup(target=target, backup_path=udisk) # 从target备份到U盘 if __name__ == '__main__':
target = r"C:\Users\Administrator\Desktop\test"
isBackup = True # Ture:从U盘备份到target False:从target备份到U盘
main(target, isBackup)

【python3】拷贝U盘文件的更多相关文章

  1. Linux拷贝U盘文件(命令行)

    Linux系统有的有界面,有的没有只要命令窗口,因此导入外部文件就变得困难,没有可视化的方便. 这里通过挂载u盘进行文件拷贝. 首先挂载u盘:这里以centos为例 1.进入命令行模式下,输入命令 s ...

  2. U盘文件被隐藏

    转自https://blog.csdn.net/zichen_ziqi/article/details/80171891 文章原地址:http://www.uqidong.com/help/1625. ...

  3. Ubuntu下U盘文件只读的解决办法

    转自linux公社:http://www.linuxidc.com/Linux/2012-12/76130.htm Ubuntu下U盘出现文件系统只读的问题了.症状为无法删除U盘中现有文件,无法向U盘 ...

  4. 使用javascript实现html页面直接下载网盘文件

    公司新建一网站,用的是商派的易开店系统.设计方案中有一个是下载文件的功能,但易开店不支持上传资源,所以无法下载本站资源. 于是想到了网盘资源下载,有些网站是把页面链接到网盘资源文件下载页面,进行二次跳 ...

  5. linux下U盘文件只读的解决办法

    . 在终端运行如下命令 tail -f /var/log/syslog . 插入有只读文件系统故障的U盘 . 观察命令行输出 输出局部如下: Jul :: cslouis-pc kernel: [15 ...

  6. u盘文件系统故障的修复方法

    比如U盘挂载的文件系统是/dev/sda1,且文件系统有故障(FAT: Filesystem error) 修复U盘文件系统故障 sudo dosfsck -v -a /dev/sda1

  7. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

  8. 将U盘分成 启动盘+文件存储区

    我看了很多帖子,发现想要将U盘分区的朋友绝大部分是和我一样,想用U盘做成一个启动盘同时兼顾文件存储,分区的目的很简单,就是想将启动部分单独做成一个区,以免在日常的应用中使得启动文件染毒或者误操作造成损 ...

  9. Mysql 利用拷贝data目录文件的方式迁移mysql数据库

    Mysql 利用拷贝data目录文件的方式迁移mysql数据库 步骤如下: 1.首先要确定data目录 这个问题困扰了我很久,因为网上的帖子大部分只是说拷贝mysql数据库目录下的data文件夹中的数 ...

随机推荐

  1. SQL语句大全教程

    创建数据库 CREATE DATABASE DBNAME 删除数据库 DROP DATABASE DBNAME Ø 基本常用查询 --selectselect * from student; --al ...

  2. 卸载oracle 10g

    1.开始->设置->控制面板->管理工具->服务——>   停止所有Oracle服务.(没有起动的就不用停用了)2.开始->程序->Oracle - OraD ...

  3. MagicalRecord使用中的注意事项

    MagicalRecord使用中的注意事项 使用CoreData [1] 使用CoreData [2] 使用CoreData [3] 使用CoreData [4] 使用MagicalRecord操作C ...

  4. 转载:从程序员的角度看ASCII, GB2312, UNICODE, UTF-8

    以下内容转自博客:http://blog.chinaunix.net/uid-22670933-id-1771613.html. 一.字符编码是怎么回事 0. 概念 字节是计算机的最基本存储单位,一个 ...

  5. November 29th 2016 Week 49th Tuesday

    It is not easy to meet each other in such a big world. 世界这么大,能遇见,不容易. To meet each other, to make ne ...

  6. ZT Android4.2蓝牙基础架构学习

    Android4.2蓝牙基础架构学习 分类: Jellybean Bluetooth Bluetooth 2013-10-13 23:58 863人阅读 评论(3) 收藏 举报 androidblue ...

  7. MapReduce实例2(自定义compare、partition)& shuffle机制

    MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...

  8. 面向对象程序设计_tesk1_寒假伊始

    大一下学期的自我目标(要求包含对大一上学期的总结.对面向对象课程完成后学习到的能力的预期,对面向对象课程的期望.对编程和专业能力的愿景规划) 在大学的第一个学期,相信很多人都是在得过且过度过,我也不例 ...

  9. foreach 计数

    foreach(var item in list.Select((x, i) => new { x, i })){    User user = item.x;    int Idx = ite ...

  10. 【http学习杂记】2017年7月14日

    1. 连接超时 连接超时是tcp协议层次, 此时服务器还没有处理请求数据,也就是说服务器的逻辑开没有执行 2. 请求超时 请求超时属于服务器已经连接成功并开始处理,但是时间比较长,大于你设置的请求超时 ...