python程序怎么保存到u盘_基于python的u盘自动拷贝工具

0x00 需要用到的库OS:OS库提供了使用各种操作系统功能的接口。主要有对目录或者文件的新建,删除,查看文件属性,还提供了对文件以及目录的路径操作。

shutil:对文件提供了移动,复制,打包,压缩等功能,这里主要用到复制功能。

time: 时间处理的库,在这里用来程序休眠的时间。

0x01 程序设计思路

我们需要每隔一段时间检查是否有u盘插入,如果检测到有u盘,则将u盘的内容全部拷贝到本机的指定文件夹。

0x02 最简单模式编程实现1

2

3

4

5

6

7

8

9

10

11

12

13

14import os

import time

import shutil

USB = 'D:\\' # u盘目录

SAVE = 'C:\\Users\Leticia\Desktop\copy' # 保存目录

def usbcopy():

shutil.copytree(USB, SAVE)

def main():

while (1):

if os.path.exists(USB):

usbcopy()

time.sleep(200) # 休眠时间

main()

此程序中,USB变量是u盘目录,根据个人电脑来填写,SAVE变量是将拷贝出来的文件保存的目录,time.sleep(200)代表每次判断完之后休眠200秒。

此时测试程序已经可以自动拷贝了,但是还存在一些问题,比如我们已经拷贝完成了,然后休眠完成之后u盘没有拔,这个时候会重新复制一遍。但是我们如果写成检测到u盘,拷贝一遍程序就停止运行,那么u盘内容发生变化我们要怎么做,所以我们还要加几个功能。

0x03 增加检测变化模块的编程实现1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34import os

import time

import shutil

from os.path import join,getsize

USB = 'D:\\' # u盘目录

SAVE = 'C:\\Users\Leticia\Desktop\copy' # 保存目录

def getdirsize(dir):

size=0

for root,dirs,files in os.walk(dir):

size+=sum([getsize(join(root,name)) for name in files])

print(size)

return size

def usbcopy():

shutil.copytree(USB, SAVE)

def main():

old_dirsize = 0

new_dirsize = 0

while (1):

if os.path.exists(USB):

print("检测到U盘")

new_dirsize = getdirsize(USB)

if old_dirsize != new_dirsize:

usbcopy()

old_dirsize = new_dirsize

else:

print("没有变化")

else:

print("暂时没有U盘")

print("开始休眠")

time.sleep(5) # 休眠时间

print("休眠结束")

main()

这里我们新加了一个getdirsize函数来遍历u盘文件并统计总大小,然后如果总大小改变,则拷贝,如果没变,就不重新拷贝。

这样就解决了文件更新的问题,根据下图print的提示我们可以看到大概的工作流程。

0x04 其他

如果这样还觉得不方便的话,在这里再提供一个vbs的拷贝小脚本,同样能达到我们的功能,在txt中输入如下代码,然后根据个人路径稍作更改,然后讲后缀改成vbs,双击运行,就可以在后台自动拷贝了。

1

2

3

4

5

6

7

8

9

10

11set fso=createobject("scripting.filesystemobject")

set ws=createobject("wscript.shell")

on error resume next

do

wscript.sleep 1000

if fso.driveexists("D:") then

fso.copyfile "D:*","C:\Users\Leticia\Desktop\copy"

fso.copyfolder "D:*","C:\Users\Leticia\Desktop\copy"

wscript.sleep 20000

end if

loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值