python复制文件

公司一个程序同步出问题,写了一个定时同步的脚本
需要一个filename.json的配置文件
格式:

{
    "path_read":"D:\\xx\\xx",
    "path_write":"E:\\xx\\xx"
}

程序代码:

import os
import sys
import json
from shutil import copyfile # 复制一个文件到另一个文件夹下    copyfile(src,dst)  
import schedule

# 递归函数
def copy_file(path_read, path_write):
    # 输出path_read目录下的所有文件包括文件夹的名称
    names = os.listdir(path_read)
    # 循环遍历所有的文件或文件夹
    for name in names:
        # 定义新的读入路径(就是在原来目录下拼接上文件名)
        path_read_new = path_read + "\\" + name
        # 定义新的写入路径(就是在原来目录下拼接上文件名)
        path_write_new = path_write + "\\" + name
        # 判断该读入路径是否是文件夹,如果是文件夹则执行递归,如果是文件则执行复制操作
        if os.path.isdir(path_read_new):
            # 判断写入路径中是否存在该文件夹,如果不存在就创建该文件夹
            if not os.path.exists(path_write_new):
                # 创建要写入的文件夹
                os.mkdir(path_write_new)
            # 执行递归函数,将文件夹中的文件复制到新创建的文件夹中(保留原始目录结构)
            copy_file(path_read_new, path_write_new)
            print(f"已将{path_read_new}复制到{path_write_new}")
        else:
            # 如果已存在就不复制
            if not os.path.exists(path_write_new):
                # 将文件path_read_new复制到path_write_new
                copyfile(path_read_new, path_write_new)
                print(f"已将{path_read_new}复制到{path_write_new}")

def read_json(json_file):
    json_data = None
    with open(json_file,'r',encoding='utf8')as fp:
        json_data = json.load(fp)
    return json_data

# if __name__ == "__main__":
def run():
    # json_file = "D:\\gitopject\\文件夹递归复制"+os.sep+"filename.json"
    # 用pyinstaller打包成exe,json配置文件和exe再同一目录下使用下面这个
    json_file = os.path.dirname(os.path.realpath(sys.executable))+os.sep+"filename.json"
    try:
        json_data = read_json(json_file)
    except Exception as e:
        print("配置文件读取失败!!!")
    # 从该文件夹中复制出来
    path_read = json_data.get("path_read")
    # 复制到该文件夹
    path_write = json_data.get("path_write")
    print(f'【注意】:\n要复制的文件夹不能和目标文件夹下面有重名,否则不会复制!!!!!\n将目录{path_read}复制到{path_write}下\n')
    try:
        copy_file(path_read, path_write)
    except Exception as e:
        print("拷贝文件失败!!!", e)

if __name__ == '__main__':
    print("文件复制程序开始!!!")
    # 启动时先运行一次
    run()
    # 定时每隔十分钟跑一次
    schedule.every(10).minutes.do(run)

    while True:
        schedule.run_pending()

打包命令
pyinstaller xx.py -F

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐