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操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
305 60
|
29天前
|
安全 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文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
11天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
15 2
|
1月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
51 1
Python实用记录(十三):python脚本打包exe文件并运行
|
21天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
24 2
|
21天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
27天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
28天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
41 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数