原理:利用python的win32模块,注冊服务,让代码在后台执行,检測光盘并复制文件

启动的方法就是直接在cmd下,main.py install ,然后去windows 的服务下就能够看到The smallestpossible Python Service 这个服务,你能够启动,停止。还能够设置成开机自己主动启动。

启动服务后,会自己主动检測光盘并在后台复制文件

main.py

  1. import win32serviceutil
  2. import win32service
  3. import win32event
  4. import CopyDvd2Hard
  5. class SmallestPythonService(win32serviceutil.ServiceFramework):
  6. _svc_name_ = "SmallestPythonService"
  7. _svc_display_name_ = "The smallest possible Python Service"
  8. def __init__(self, args):
  9. win32serviceutil.ServiceFramework.__init__(self, args)
  10. # Create an event which we will use to wait on.
  11. # The "service stop" request will set this event.
  12. self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
  13. def SvcStop(self):
  14. # Before we do anything, tell the SCM we are starting the stop process.
  15. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  16. # And set my event.
  17. win32event.SetEvent(self.hWaitStop)
  18. def SvcDoRun(self):
  19. #实际执行代码#
  20. CopyDvd2Hard.copydvd2hard()
  21. win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
  22. if __name__=='__main__':
  23. win32serviceutil.HandleCommandLine(SmallestPythonService)

CopyDvd2Hard.py

  1. __author__ = 'M'
  2. import os
  3. import win32file
  4. import shutil
  5. import time
  6. def copydvd2hard(dstdir='temp'):
  7. #检測本地的最后一个光驱和硬盘分区
  8. letters = [l.upper() + ':' for l in 'abcdefghijklmnopqrstuvwxyz']
  9. cdrom = ''
  10. harddrive = ''
  11. for drive in letters:
  12. if win32file.GetDriveType(drive) == 3:
  13. harddrive = drive
  14. if win32file.GetDriveType(drive) == 5:
  15. cdrom = drive
  16. cdrom += '/'
  17. harddrive = harddrive + '/' + dstdir
  18. #检測光驱内是否有光盘,等待光盘插入
  19. while os.system('cd /d' + cdrom):
  20. time.sleep(5)
  21. #复制文件
  22. shutil.copytree(cdrom, harddrive)
  23. if __name__ == '__main__':
  24. copydvd2hard()

自己主动检測&后台复制光盘内容的更多相关文章

  1. Android Studio代码自己主动检測错误提示

    Android Studio的代码自己主动检測的错误提示方式感觉有点奇葩.和Eclipse区别非常大,Eclipse检測到某个资源文件找不到或者错误,都会在Project中相应的文件前面打叉.可是An ...

  2. 从头认识Spring-2.7 自己主动检測Bean(1)-@Component @Repository @Service @Controller

    这一章节我们来讨论一下自己主动检測Bean. 1.domain 厨师类: package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_19; ...

  3. 使用UIDataDetectorTypes自己主动检測电话、网址和邮箱

    支付宝公布最新版本号9.0.再一次引发一场撕逼大战.微信说支付宝抄袭了它.支付宝说微信一直都在抄袭自己.在我看来.微信和支付宝都抄袭了对方.对于大佬们的抄袭.我们也是司空见惯了. 支付宝这一次更新,真 ...

  4. Android自己主动检測版本号及自己主动升级

    步骤: 1.检測当前版本号的信息AndroidManifest.xml-->manifest-->android:versionName. 2.从server获取版本号号(版本号号存在于x ...

  5. 从头认识Spring-2.7 自己主动检測Bean(2)-过滤器<context:include-filter/>

    这一章节我们来讨论一下过滤器<context:include-filter/>的使用. 1.domain Person接口: package com.raylee.my_new_sprin ...

  6. MySQL高可用之组复制技术(2):配置单主模型的组复制

    MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...

  7. MySQL高可用之组复制技术(3):配置多主模型的组复制

    MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...

  8. Zclip复制页面内容到剪贴板兼容各浏览器

    Zclip:复制页面内容到剪贴板兼容各浏览器 WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮 ...

  9. C语言memmove()函数: 复制内存内容(可以重叠的内存块)

    头文件:#include <string.h> memmove() 用来复制内存内容,其原型为: void * memmove(void *dest, const void *src, s ...

随机推荐

  1. 教您如何在Word的mathtype加载项中修改章节号

    在MathType数学公式编辑器中,公式编号共有五部分内容:分别是章编号(Chapter Number).节编号(Section Number).公式编号(Equation Number).括号(En ...

  2. RabbitMQ消息确认(发送确认,接收确认)

    前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题. 下面是几个问题: 1.为什么要进行消息确认? 2.rabbitmq消息确认 机制是什么样的? 3.发送方如何确认消息发送成功? ...

  3. POJ 1337 A Lazy Worker(区间DP, 背包变形)

    Description There is a worker who may lack the motivation to perform at his peak level of efficiency ...

  4. ActiveMQ内存配置和密码设置

    1.配置内存 bin中activemq.bat 中的第一行 加上 : REM 配置内存 set ACTIVEMQ_OPTS=-Xms1G -Xmx1G 2.修改控制台密码 1.打开conf/jetty ...

  5. MySQL只有information_schema,test两个数据库

    一.现象 1.今天登上数据库,用 mysql -uroot -proot 登录(本人密码是root),出现: 2.然后尝试 无密码登录,竟然登录成功: 3.查看mysql中的数据库,发现只有两个系统表 ...

  6. select下拉框不能赋值

    前言: 需要用到类似于下面的下拉选择框,按照官方文档写,始终实现不了下拉框赋上值的情况. 过程: 认认真真的看了好几遍文档,但是还没找到原因,不过还是应该感谢自己加入的vue-admin的微信群,大家 ...

  7. 使用React写的一个小小的登录验证密码组件

    哎,算了.直接上代码吧,不懂得私聊我把 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  8. vs2008设置dll、lib库的输出路径

    vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法. 设置x.dll 输出路径方法是在右键项目的"属性"- ...

  9. 《转载》POI导出excel日期格式

    参考帖子: [1]http://www.ithao123.cn/content-2028409.html [2]http://javacrazyer.iteye.com/blog/894850 再读本 ...

  10. MQTT的学习研究(三)moquette-mqtt 的使用之mqtt服务发布主题信息

    接着上一篇的moquette-mqtt 的使用之broker启动之后,我们需要启动moquette-mqtt 的服务端发布消息. 在moquette-mqtt 的mqtt-client中三种方式实现发 ...