当前位置: 主页 > Python语言

python 文件操作 复制-python 文件操作 复制

发布时间:2023-02-10 10:24   浏览次数:次   作者:佚名

python 文件操作 utf-8_python 文件操作 复制_python 文件操作 复制

阅读全文大约需要 6 分钟。

Python语言有很多有趣的内容python 文件操作 复制,比如自动给微信好友发消息,查看微信好友撤回的消息,通过微信控制电脑等等。 我也在我的公众号上分享了很多有趣的节目。 近期会收集一些花式操作的Python程序分享给大家,并将专栏命名为“Python花式操作”,持续更新中! 本文部分程序可能来自他人文章,但如果我觉得程序还有改进的余地,我会继续补充一些代码,并在文末标明原程序出处.

今天的《Python秀操作》分享的是一个自动复制电脑U盘内容的程序。 当别人的U盘插入你的电脑时,Python脚本会自动将U盘中的所有内容复制到你的电脑中。 该脚本每 5 秒扫描一次当前计算机是否插入了 U 盘。 如果内容已经复制过,则不会重复复制,每次对应的操作都会记录在日志文件中。

python 文件操作 utf-8_python 文件操作 复制_python 文件操作 复制

python 文件操作 复制_python 文件操作 复制_python 文件操作 utf-8

如果正好这个U盘里有一些室友的“学习视频”python 文件操作 复制,如下图。

python 文件操作 utf-8_python 文件操作 复制_python 文件操作 复制

愤怒指数10星!

注意本程序仅供学习交流使用,请勿非法使用。

python 文件操作 utf-8_python 文件操作 复制_python 文件操作 复制

Python 展示思路

在windows系统下,当U盘插入你的电脑时,它会被分配一个磁盘名,比如我的电脑上是“J”。 所以我会先定义一个“USB_FILE”变量,表示U盘所在的目录。

我们使用os库来判断当前系统是否有“USB_FILE”。 如果当前系统有这个目录,说明当前电脑有U盘插入。 然后我们通过shutil库将U盘的内容全部复制到我们的电脑中。 在每个操作之间,我添加了 input_log() 方法来将当前对应的操作记录到日志文件中。

Python骚源码

python 文件操作 复制_python 文件操作 utf-8_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

python 文件操作 复制_python 文件操作 utf-8_python 文件操作 复制

主要的()

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("休眠结束,重新检测")

输入日志()

python 文件操作 复制_python 文件操作 utf-8_python 文件操作 复制

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"