Python 实现自动复制文件_V1.1.1

发布时间 2024-01-03 17:14:32作者: 小钟学编程

一:需求
从某目录索引其所有文件夹文件,若包含某特定字符串的文件。拷贝至指定文件

二:事前准备
Python导入依赖库:
import configparser
import logging
import os
import shutil
import datetime
三:开发:
1.创建配置文件,用于填写三个数据:源目录,目标目录,指定字符串
[Directories]
source_directories = D:\12013275
destination_directories = D:\logs1
[Search]
search_strings = 2023
2.主文件:数据初始化,索引查询文件,拷贝文件,日志记录
2.1创建ProgramInitialization函数(方法),用于初始化需要的数据,并将数据变量设置为全局变量global.
def ProgramInitialization():
global current_directory,today_day,log_dst_path
current_directory = os.getcwd()
today_day = datetime.datetime.now().strftime('%Y-%m-%d')
log_dst_path = os.path.join(current_directory, "log")
os.makedirs(log_dst_path, exist_ok=True)
logFile = os.path.join(log_dst_path, 'Copy_File' + today_day + '.log') logging.basicConfig(filename=logFile,level=logging.DEBUG,format='%(asctime)s %(levelname)s: %(message)s')
2.2创建find_and_copy_files函数(方法),用于查询源目录及其子文件夹,索引符合条件的文件,拷贝至目标路径
def find_and_copy_files(src_dir, dst_dir, search_str):
"""
在源目录中查找包含特定字符串的文件,并将它们复制到目标目录。

参数:
    src_dir (str): 源目录路径。
    dst_dir (str): 目标目录路径。
    search_str (str): 要搜索的字符串。
"""
# 确保源目录和目标目录都存在
if not os.path.exists(src_dir):
    msg = f"源目录 {src_dir} 不存在!"
    logging.info(msg)
    print(msg)
    return
if not os.path.exists(dst_dir):
    os.makedirs(dst_dir)
    # 遍历源目录中的所有文件和子目录
for root, dirs, files in os.walk(src_dir):
    for file in files:
        # 检查文件名是否包含搜索字符串
        if search_str in file:
            # 构建源文件和目标文件的完整路径
            src_file = os.path.join(root, file)
            dst_file = os.path.join(dst_dir, file)
            shutil.copy2(src_file, dst_file)
            msg = f"文件 {src_file} 已复制到 {dst_file}"
            logging.info(msg)
            print(msg)

2.3创建run函数(方法),用于程序连接,运行
def run():
ProgramInitialization()
msg = '读取配置文件config.ini'
logging.info(msg)
print(msg)
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini',encoding='utf-8')
# 从配置文件中获取源目录、目标目录和特定字符串
source_dir = config['Directories']['source_directory']
target_dir = config['Directories']['destination_directory']
search_string = config['Search']['search_string']
msg = f'源目录:{source_dir},目标目录:{target_dir},特定文件名字符串:{search_string}'
logging.info(msg)
print(msg)
msg = f'运行find_and_copy_files,检索文件,复制文件'
logging.info(msg)
print(msg)
find_and_copy_files(source_dir, target_dir, search_string)
2.4执行程序:
try:
run()
msg = '程序运行成功'
logging.info(msg)
print(msg)
except Exception as e:
msg = f'程序运行失败:{e}'
logging.info(msg)
print(msg)![](https://img2024.cnblogs.com/blog/3366768/202401/3366768-20240103170837485-1689777004.png) ![](https://img2024.cnblogs.com/blog/3366768/202401/3366768-20240103170902934-850572887.png) ![](https://img2024.cnblogs.com/blog/3366768/202401/3366768-20240103170951181-1817730546.png)