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

相关文章
|
3天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
24天前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
41 7
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
288 7
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
223 4
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
3月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
103 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
2月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
104 2
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
66 2
|
3月前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
2月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。