Python 文件复制工具

简介: Python 文件复制工具

文件复制工具,可以用于做文件备份。用于日常的更新部署

import os, shutil, time
import configparser
def main():
    root_dir = os.path.split(os.path.realpath(__file__))[0]# 获取当前文件所在目录的上一级目录,即项目所在目录
    configPath = os.path.join(root_dir, "config.txt")
    cf = configparser.ConfigParser()
    cf.read(configPath,"utf-8")  # 拼接得到config.txt文件的路径,直接使用
    # 数据库服务器信息
    file_path = cf.get("Copy-Config", "file_path")  # 源文件夹
    target_path = cf.get("Copy-Config", "target_path")  # 目标文件夹
    # 挑选需要复制的文件
    file_list = choose_file(file_path,target_path)
    # 复制文件
    if len(file_list) > 0:
        copy_file(file_list,file_path,target_path)
    os.system('cls')
    print('\n操作完成~\n')
    isOpen()
# 是否需要启动程序
def isOpen():
    while True:
        menu = {
            "1": "进入程序",
            "2": "退出此程序",
        }
        for k, v in menu.items():
            print(f"{k}、{v}")
        Your_input = input("请您选择:".strip()).upper()
        if Your_input == "1":
            main()
        elif Your_input == "2":
            print("欢迎您再次使用,再见~")
            sys.exit()
        else:
            print("请您选择(1/2)")
#递归全文件复制
def copyAll(src, target,filter_folder):
    if os.path.isdir(src) and os.path.isdir(target):
        filelist = os.listdir(src)
        for file in filelist:
            # 判断是否为文件夹
            path = os.path.join(src, file)
            if os.path.isdir(path):
                # 如果符合需要过滤的文件夹名,则跳过
                if(file in filter_folder):
                    continue
                path1 = os.path.join(target, file)
                if not os.path.isdir(path1):
                    os.mkdir(path1)
                copyAll(path, path1,filter_folder)
            else:
                with open(path, 'rb') as rsteam:
                    cotiner = rsteam.read()
                    path = os.path.join(target, file)
                    with open(path, 'wb') as wsteam:
                        wsteam.write(cotiner)
        else:
            print('')
def choose_file(path,target):
    """
     选择需要的文件
    :param path:文件路径
    :return:被选中的文件名
    """
    file_list = []
    list_dir = os.listdir(path)
    for i in range(len(list_dir)):  # 遍历目标文件夹下的所有文件
        print('[{}]----{}\n'.format(i, list_dir[i]))
    menu = {
        "1": "通过序号选择指定文件",
        "2": "指定文件后缀",
        "3": "指定文件名前缀",
        "4": "全部文件"
    }
    for k, v in menu.items():
        print(f"{k}、{v}")
    Your_input = input("请您选择:".strip()).upper()
    if Your_input == "1":
        # 输入序号选择需要的文件
        file_code = input('请输入序号选择文件(分隔符“,”):').split(',')
        file_list = [list_dir[int(i)] for i in file_code]
    elif Your_input == "2":
        # 输入文件后缀选择需要的文件
        file_type = input('请输入文件后缀(分隔符“,”):').split(',')
        for i in range(len(list_dir)):
           if os.path.splitext(list_dir[i])[-1][1:] in file_type:
                file_list.append(list_dir[i])
    elif Your_input == "3":       
        # 输入文件名前缀选择需要的文件
        file_name = input('文件名前缀:')
        for i in range(len(list_dir)):
            if file_name in os.path.splitext(list_dir[i])[0]:
                file_list.append(list_dir[i])
    elif Your_input == "4":
        filter_folder = []
        isFilter = input('是否需要过滤指定文件夹:(Y/N)')
        if(isFilter.upper() == "Y"):
            filter_folder = input('请输入需要过滤的文件夹名(分隔符“,”):').split(',')
        # 复制全部文件
        copyAll(path,target,filter_folder)
    return file_list
def copy_file(file_list, source, target):
    """
        批量复制文件到指定目录
    :param file_list: 需要复制的文件列表
    :param source: 文件源目录
    :param target: 目的地目录
    """
    os.chdir(source)
    for file in file_list:
        shutil.copy(file, target)   # 复制文件到指定目录
    print('复制成功, 文件夹中有{}个文件'.format(len(file_list)))
    print("#########################################\n")
    os.chdir(target)
    time.sleep(2)
if __name__ == '__main__':
    # 检测文件目录
    main()

配置文件:

image.png

相关文章
|
1天前
|
Python
Python如何把脚本编译成可执行exe文件_python脚本编译成可执行文件
Python如何把脚本编译成可执行exe文件_python脚本编译成可执行文件
|
1天前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
1天前
|
开发工具 Python
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
|
1天前
|
数据采集 JSON 数据挖掘
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
[python][whl]python模块triton的whl文件下载地址汇总(1)
[python][whl]python模块triton的whl文件下载地址汇总(1)
|
1天前
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
3天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
4天前
|
SQL 物联网 关系型数据库
sqlmap工具的使用 (超详细附工具版)_python sqlmap
sqlmap工具的使用 (超详细附工具版)_python sqlmap
|
4天前
|
Python
Python办公自动化|自动整理文件,一键完成!
Python办公自动化|自动整理文件,一键完成!
|
6天前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
9 0