Python 文件复制和换名案例汇总

rea:一个极简命令行工具,解决批量重命名与文件操作痛点 文件系统操作是开发中高频且易错的基础环节。批量重命名、文本替换、临时文件清理等重复任务,如果直接手写循环脚本,往往面临路径分隔符、编码兼容、目标冲突等隐蔽问题。为此,一种可靠的做法是先通过dry-run模拟执行,预览所有变更,再结合可回滚的日志机制,确保误操作能够被恢复。rea 正是基于这样的设计理念,用纯文本的 JSON 规则文件描述操作意图,以两阶段换名法处理重命名冲突,以编码识别防线保障文本替换安全,覆盖重命名、替换、清理和项目骨架生成四类常见场景。它的价值在于把易错的小操作收敛为一条命令,同时保持规 阅读详情

详细意图

1.输入:文件夹路径(base_dir),原文件名(original_name),以及一个包含多个后缀的列表(suffixes,例如[‘BB’,‘CCC’])
2.在base_dir中找到名为original_name的文件,复制该文件
3.为每个后缀粘贴一个新的文件,新文件名为将原文件名中的特定部分替换为新的后缀。例如原文件名中有一个固定的模式,“20250630_Moodys_AAA.csv”,要替换的是最后一个下划线后面的部分(‘AAA’)。

V 1.0

import os
import shutil

def batch_rename_and_copy(folder_path, original_filename, new_suffixes):
    """
    批量复制文件并修改名称(支持任意文件类型)
    
    参数:
    folder_path (str): 文件夹路径
    original_filename (str): 原始文件名(例如:"20250630_Moodys_AAA.csv")
    new_suffixes (list): 需要替换的后缀列表(例如:["BB", "CCC"])
    """
    # 构建原始文件的完整路径
    src_path = os.path.join(folder_path, original_filename)
    
    # 检查原始文件是否存在
    if not os.path.isfile(src_path):
        raise FileNotFoundError(f"原始文件不存在: {src_path}")
    
    # 提取文件名前缀和扩展名
    if '_' not in original_filename:
        raise ValueError("文件名格式不正确,缺少下划线分隔符")
    
    # 分离文件名和扩展名
    filename, file_extension = os.path.splitext(original_filename)
    
    # 获取前缀(最后一个下划线之前的部分)
    prefix = filename.rsplit('_', 1)[0]
    
    # 处理每个新后缀
    for suffix in new_suffixes:
        # 构建新文件名(保留原始扩展名)
        new_filename = f"{prefix}_{suffix}{file_extension}"
        dest_path = os.path.join(folder_path, new_filename)
        
        # 复制文件
        shutil.copy2(src_path, dest_path)
        print(f"已创建副本: {new_filename}")

# 示例用法
if __name__ == "__main__":
    folder = "/path/to/folder"
    original = "20250630_Moodys_AAA.csv"  # 支持任意文件类型
    suffixes = ["BB", "CCC"]
    
    batch_rename_and_copy(folder, original, suffixes)

V 2.0

import os
import shutil
from pathlib import Path

def copy_file_with_suffixes(folder_path, original_filename, new_suffixes):
    """
    批量复制文件并修改名称(支持任意文件类型)
    
    参数:
    folder_path (str): 文件夹路径
    original_filename (str): 原始文件名(例如:"20250630_Moodys_AAA.csv")
    new_suffixes (list): 需要替换的后缀列表(例如:["BB", "CCC"])
    """
    # 使用Path对象处理路径更高效
    base_dir = Path(folder_path)
    if not base_dir.is_dir():
        raise NotADirectoryError(f"文件夹不存在: {folder_path}")
    
    # 检查原始文件是否存在
    src_path = base_dir / original_filename
    if not src_path.is_file():
        raise FileNotFoundError(f"原始文件不存在: {src_path}")
    
    # 提取文件名前缀和扩展名
    if '_' not in original_filename:
        raise ValueError("文件名格式不正确,缺少下划线分隔符")
    
    # 使用Path对象处理文件名分割
    stem = src_path.stem  # 获取不带扩展名的文件名
    file_extension = src_path.suffix  # 获取扩展名
    
    # 获取前缀(最后一个下划线之前的部分)
    prefix = stem.rsplit('_', 1)[0]
    
    # 预先计算目标路径列表,减少循环内计算
    dest_paths = [
        base_dir / f"{prefix}_{suffix}{file_extension}"
        for suffix in new_suffixes
    ]
    
    # 批量复制文件
    for dest_path in dest_paths:
        shutil.copy2(src_path, dest_path) # 使用更高效的copy2方法(保留元数据)
        print(f"已创建副本: {dest_path.name}")

# 示例用法—单任务
if __name__ == "__main__":
    folder = "/path/to/folder"
    original = "20250630_Moodys_AAA.csv"
    suffixes = ["BB", "CCC", "DDD", "EEE"]  # 可以处理更多后缀
    
    copy_file_with_suffixes(folder, original, suffixes)

# 示例用法—多任务
if __name__ == "__main__":
    # 定义所有任务:每个任务是 (文件夹路径, 原始文件名, 新后缀列表)
    file_tasks = [
        # 任务1:Moodys文件(路径A)
        (
            "/path/to/moodys_folder",  # Moodys专属文件夹路径
            "20250630_Moodys_AAA.csv",  # Moodys原始文件名
            ["BB", "CCC"]  # Moodys需要添加的后缀
        ),
        # 任务2:SP文件(路径B)
        (
            "/path/to/sp_folder",  # SP专属文件夹路径
            "20250630_SP_AAA.csv",  # SP原始文件名
            ["DD", "EE", "FF"]  # SP需要添加的后缀
        ),
        # 任务3:Fitch文件(路径C)
        (
            "/path/to/fitch_folder",  # Fitch专属文件夹路径
            "20250630_Fitch_AAA.csv",  # Fitch原始文件名
            ["GG", "HH", "II", "JJ"]  # Fitch需要添加的后缀
        )
    ]
    
    # 遍历所有任务并执行复制
    for folder_path, original_filename, new_suffixes in file_tasks:
        copy_file_with_suffixes(folder_path, original_filename, new_suffixes)
        print(f"完成文件夹 {folder_path} 下的所有文件复制")  # 分隔不同文件夹的输出

主要优化点:

  1. 使用Path对象:使用pathlib.Path替代os.path处理路径,更现代且高效
  2. 减少重复计算:预先计算所有目标路径,减少循环内的计算量
  3. 更高效的文件检查:使用Path对象的is_file()方法替代os.path.isfile()
  4. 更简洁的文件名处理:使用Path对象的stem和suffix属性替代os.path.splitext()

V2.0的多线程改进方案:使用 concurrent.futures.ThreadPoolExecutor

import os
import shutil
import concurrent.futures
from pathlib import Path
from tqdm import tqdm
import logging

# 配置日志格式(含时间戳)
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S"
)

def copy_file_with_suffixes(folder_path, original_filename, new_suffixes, overwrite=True):
    """
    批量复制文件并修改名称(支持任意文件类型)
    
    参数:
    folder_path (str): 文件夹路径
    original_filename (str): 原始文件名(例如:"20250630_Moodys_AAA.csv")
    new_suffixes (list): 需要替换的后缀列表(例如:["BB", "CCC"])
    overwrite (bool): 是否覆盖已存在的目标文件(默认True)
    """
    # 使用Path对象处理路径更高效
    base_dir = Path(folder_path)
    if not base_dir.is_dir():
        raise NotADirectoryError(f"文件夹不存在: {folder_path}")
    
    # 检查原始文件是否存在
    src_path = base_dir / original_filename
    if not src_path.is_file():
        raise FileNotFoundError(f"原始文件不存在: {src_path}")
    
    # 提取文件名前缀和扩展名
    if '_' not in original_filename:
        raise ValueError("文件名格式不正确,缺少下划线分隔符")
    
    # 使用Path对象处理文件名分割
    stem = src_path.stem  # 不带扩展名的文件名(如 "20250630_Moodys_AAA")
    file_extension = src_path.suffix  # 扩展名(如 ".csv")
    prefix = stem.rsplit('_', 1)[0]  # 最后一个下划线前的部分(如 "20250630_Moodys")
    
    # 预先计算目标路径列表,减少循环内计算
    dest_paths = [
        base_dir / f"{prefix}_{suffix}{file_extension}"
        for suffix in new_suffixes
    ]
    
    # 批量复制文件
    copied_count = 0
    for dest_path in dest_paths:
        if dest_path.exists() and not overwrite:
            logging.warning(f"跳过已存在文件: {dest_path}")
            continue  # 跳过不覆盖
        shutil.copy2(src_path, dest_path) # 使用更高效的copy2方法(保留元数据)
        logging.info(f"复制成功: {dest_path.name}")
        copied_count += 1
    
    return copied_count  # 返回当前任务复制的文件数
    
def process_multiple_files_threadpool(file_tasks, max_workers=None):
    """
    使用线程池并行处理多个文件复制任务,并显示进度条
    
    参数:
    file_tasks (list): 任务列表,每个元素是元组 (folder_path, original_filename, new_suffixes)
    max_workers (int): 线程池最大线程数(默认自动调整为 min(10, 任务数))
    """
    # 自动设置线程数(可选优化)
    if max_workers is None:
        cpu_count = os.cpu_count() or 1
        # 对于IO密集型任务,通常设置为CPU核心数的2倍
        max_workers = min(max(2, cpu_count * 2), len(file_tasks), 10)  # 最多10个线程
    
    # 提交任务到线程池,并建立 Future -> 任务参数的映射
    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
        future_to_task = {}
        for task in file_tasks:
            folder_path, original_filename, new_suffixes, overwrite = task
            # 提交任务,并将 Future 对象映射到任务参数
            future = executor.submit(
                copy_file_with_suffixes,
                folder_path=folder_path,
                original_filename=original_filename,
                new_suffixes=new_suffixes,
                overwrite=overwrite # 可根据需要调整默认值
            )
            future_to_task[future] = task
        
        # 初始化进度条(总数为任务数)
        pbar = tqdm(
            total=len(file_tasks),
            desc="文件复制进度",
            unit="任务",
            bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]"
        )
        
        # 遍历完成的 Future 对象
        for future in concurrent.futures.as_completed(future_to_task):
            task = future_to_task[future]  # 获取当前任务参数
            folder_path, original_filename, new_suffixes = task
            
            try:
                # 执行任务并获取结果(此处返回复制的文件数,可选)
                copied = future.result()
                logging.debug(f"任务完成: {original_filename},复制了 {copied} 个文件")  # 调试日志
            except Exception as e:
                logging.error(f"任务失败: 文件夹={folder_path}, 文件={original_filename}, 错误={str(e)}")
            finally:
                pbar.update(1)  # 无论成功或失败,进度条前进
        
        pbar.close()  # 关闭进度条

# 示例用法
if __name__ == "__main__":
    # 任务列表:每个元素是 (文件夹路径, 原始文件名, 新后缀列表)
    file_tasks = [
        ("/path/to/moodys_folder", "20250630_Moodys_AAA.csv", ["BB", "CCC"], True),
        ("/path/to/sp_folder", "20250630_SP_AAA.csv", ["DD", "EE", "FF"], True),
        ("/path/to/fitch_folder", "20250630_Fitch_AAA.csv", ["GG", "HH", "II", "JJ"], True)
    ]
    
    # 执行多线程复制(显式设置线程数为3)
    process_multiple_files_threadpool(file_tasks, max_workers=3)
    
def copy_file_with_suffixes(folder_path, original_filename, new_suffixes, overwrite=True):
    """
    Batch copy files with modified names (supports any file type)
    
    Parameters:
    folder_path (str): Folder path
    original_filename (str): Original filename (e.g., "20250630_Moodys_AAA.csv")
    new_suffixes (list): List of suffixes to replace (e.g., ["BB", "CCC"])
    overwrite (bool): Whether to overwrite existing target files (default: True)
    """
    # Use Path object for more efficient path handling
    base_dir = Path(folder_path)
    if not base_dir.is_dir():
        raise NotADirectoryError(f"Directory does not exist: {folder_path}")
    
    # Check if source file exists
    src_path = base_dir / original_filename
    if not src_path.is_file():
        raise FileNotFoundError(f"Source file does not exist: {src_path}")
    
    # Extract filename prefix and extension
    if '_' not in original_filename:
        raise ValueError("Filename format incorrect: missing underscore separator")
    
    # Use Path object for filename splitting
    stem = src_path.stem  # Filename without extension (e.g., "20250630_Moodys_AAA")
    file_extension = src_path.suffix  # File extension (e.g., ".csv")
    prefix = stem.rsplit('_', 1)[0]  # Part before last underscore (e.g., "20250630_Moodys")
    
    # Precompute destination paths to reduce in-loop calculations
    dest_paths = [
        base_dir / f"{prefix}_{suffix}{file_extension}"
        for suffix in new_suffixes
    ]
    
    # Batch copy files
    copied_count = 0
    for dest_path in dest_paths:
        if dest_path.exists() and not overwrite:
            logging.warning(f"Skipping existing file: {dest_path}")
            continue  # Skip without overwriting
        shutil.copy2(src_path, dest_path) # Use more efficient copy2 method (preserves metadata)
        logging.info(f"Successfully copied: {dest_path.name}")
        copied_count += 1
    
    return copied_count  # Return number of files copied in this task
    
def process_multiple_files_threadpool(file_tasks, max_workers=None):
    """
    Process multiple file copy tasks in parallel using thread pool with progress bar
    
    Parameters:
    file_tasks (list): List of tasks, each element is a tuple (folder_path, original_filename, new_suffixes)
    max_workers (int): Maximum number of threads in pool (default: min(10, task_count))
    """
    # Automatically set thread count (optional optimization)
    if max_workers is None:
        cpu_count = os.cpu_count() or 1
        # For IO-intensive tasks, typically set to 2x CPU cores
        max_workers = min(max(2, cpu_count * 2), len(file_tasks), 10)  # Maximum 10 threads
    
    # Submit tasks to thread pool and create Future -> task parameter mapping
    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
        future_to_task = {}
        for task in file_tasks:
            folder_path, original_filename, new_suffixes, overwrite = task
            # Submit task and map Future object to task parameters
            future = executor.submit(
                copy_file_with_suffixes,
                folder_path=folder_path,
                original_filename=original_filename,
                new_suffixes=new_suffixes,
                overwrite=overwrite # Can adjust default as needed
            )
            future_to_task[future] = task
        
        # Initialize progress bar (total = number of tasks)
        pbar = tqdm(
            total=len(file_tasks),
            desc="File Copy Progress",
            unit="task",
            bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]"
        )
        
        # Iterate through completed Future objects
        for future in concurrent.futures.as_completed(future_to_task):
            task = future_to_task[future]  # Get current task parameters
            folder_path, original_filename, new_suffixes = task
            
            try:
                # Execute task and get result (returns number of files copied, optional)
                copied = future.result()
                logging.debug(f"Task completed: {original_filename}, copied {copied} files")  # Debug log
            except Exception as e:
                logging.error(f"Task failed: folder={folder_path}, file={original_filename}, error={str(e)}")
            finally:
                pbar.update(1)  # Advance progress bar regardless of success/failure
        
        pbar.close()  # Close progress bar
from pathlib import Path
from typing import Union, List, Tuple

def generate_file_tasks(
    paths: Union[Union[str, Path], List[Union[str, Path]]],
    original_filenames: List[str],
    target_filenames: List[List[str]],
    overwrite: List[bool]
) -> List[Tuple[Path, str, List[str], bool]]:
    # Convert paths to a list of Path objects
    if isinstance(paths, (str, Path)):
        path_list = [Path(paths)] * len(original_filenames)
    else:
        path_list = [Path(p) for p in paths]
    
    # Validate input lengths
    if len(path_list) != len(original_filenames) or len(original_filenames) != len(target_filenames) or len(original_filenames) != len(overwrite):
        raise ValueError("The lengths of paths, original_filenames, target_filenames, and overwrite must be consistent")
    
    file_tasks = []
    for path, orig, targets, overwrite_flag in zip(path_list, original_filenames, target_filenames, overwrite):
        # Filter out target filenames that are identical to the original filename
        filtered_targets = [t for t in targets if t != orig]
        file_tasks.append((path, orig, filtered_targets, overwrite_flag))
    
    return file_tasks
Snap打包实战:Ubuntu 18.04下Python应用的可重现、跨架构、安全交付 Snap是一种面向Linux应用的声明式软件打包与分发技术,基于squashfs镜像和严格沙盒(AppArmor/seccomp)实现运行时环境隔离与依赖捆绑。其核心原理是通过snapcraft.yaml声明构建逻辑与运行约束,由snapd统一管理安装、更新、权限与生命周期。相比deb或AppImage,Snap在ARM设备适配、CI/CD友好性、灰度发布与回滚能力上具备显著工程优势,尤其适用于Ubuntu 18.04等长期支持系统上的IoT、边缘计算及桌面应用交付场景。本文聚焦snapcraft、snap 阅读详情

相关推荐

技能熔炉:一键从任意来源安装SKILL.md到AI Agent环境

在AI Agent与LLM应用快速演进的当下,技能(Skills)作为模型调用外部能力的关键载体,正以Markdown+YAML的标准化格式(如SKILL.md)广泛涌现。然而,从分散的GitHub仓库、URL或本地压缩包中获取技能,再手动复制、整理、校验并装入Agent环境,往往需要繁琐的目录操作与依赖排查,成为自动化工作流中的“最后一公里”。本文将介绍一款名为“技能熔炉”(skillforge)的命令行工具,它通过解析来源类型、递归定位SKILL.md、解析front matter、完整性校验等六步链路

weixin_28829629的博客 190

python 复制替换文件_在Python中复制和替换文件

python 复制替换文件The python language provides a built-in module "shutil", which offers numerous high-level operations on files and collections of files. In particular, functions are provided to support th...

cumtv80668的专栏 6155

品牌产品命名实战:从案例拆解到可注册名的系统化工作流

品牌命名本质是信息压缩与认知占位的系统工程。其原理在于通过语义编码降低用户记忆成本,同时借助法律排他性构建竞争壁垒。技术价值体现在将零散案例转化为可复用的命名模式与决策流程,显著提升命名效率与注册通过率。典型应用场景包括新产品线起名、品牌出海本地化及品类延伸。实践中需融合商标初查、跨语言谐音筛查与小范围用户验证,形成从案例清洗、模式归纳到候选名生成、法律初筛的闭环。本文以全球品牌命名案例为起点,系统梳理命名模式分类与落地避坑指南,帮助品牌方与产品经理建立可迭代的命名工作流。

weixin_34208185的博客 377

Python:Anaconda重命名虚拟环境、删除环境、复制环境

1. 已经创建的 linux condapython环境,现在想重命名,首先查看一下当前的环境: 2. 进入到需要重命名的环境,查看一下当前 python 版本 3.退出需要重命名的环境,克隆一下环境,并重命名: 再看一下,当前的 conda 环境; 4.删除原有的 conda 环境 conda remove -n envconda --all # --all:表示删除整个conda环境; 5. 因此, 不能直接重命名已有环境,可以选择复制当前环境并重命名,再删...

weixin_41297324的博客 3005

知乎评论爬取:逆向x-zse-96签名与Python复现实战

在爬虫工程中,请求头签名是一种常见的反爬手段,它通过动态生成一次性校验值来识别自动化请求。理解签名生成原理,不仅能突破访问限制,更助于深入掌握前端加密与HTTP鉴权机制。以知乎评论接口为例,其请求头中的x-zse-96由版本号、时间戳、随机盐及绑定会话的校验值组成,核心算法隐藏在压缩混淆的JS代码中。通过抓包定位、格式化逆向和差分分析,可以还原签到逻辑,并用Python复现签名,从而稳定抓取评论数据。这一过程涉及JS逆向、哈希链、请求会话绑定等关键技术,广泛适用于舆情监控、数据分析等场景。本文从签名机制的基

weixin_34127717的博客 342

Python爬虫抓取知乎回答:接口分页、正文清洗与图片归档

数据采集的核心不是把页面文本复制下来,而是把接口返回的结构化字段、正文富文本和图片资源建立可追溯映射。以 requests.Session 复用登录态并控制请求间隔,按接口分页拉取回答列表;再用 BeautifulSoup 将 HTML 正文清洗为保留段落和代码块的纯文本,同时抽取图片 URL。这样做的技术价值在于降低前端结构变动带来的维护成本,让文本可检索、图片可校验、记录可增量更新。常见应用场景包括个人内容离线备份、授权语料整理和课题样本归档。围绕 Python 爬虫抓取知乎回答这一主题,进一步讨论 S

weixin_33290540的博客 232

注意力不是全连接层换名字:多头自注意力的张量实验

多头自注意力常被压缩成几行公式,于是维度、缩放和掩码稍有变化就难以定位错误。本文用一份不依赖深度学习框架的 Python 实验,把投影、分头、打分、稳定 Softmax、因果掩码和合并输出逐步展开,并用可复制断言检查概率和形状。

2402_84001986的博客 168

Cadence Virtuoso实战:NMOS差分放大器设计与SPICE仿真全解析

本文详细解析了使用Cadence Virtuoso设计NMOS差分放大器并进行SPICE仿真的全流程。从基础设计要点、原理图绘制到工作点分析与性能调优,提供了实用的设计技巧和常见问题解决方案,帮助工程师高效完成模拟集成电路设计。重点介绍了差分放大器的关键参数设置、饱和区优化及版图设计注意事项,适用于ADC、DAC等高性能电路开发。

weixin_28340315的博客 612

Python框架模型搭建

1.框架搭建/框架设计 项目说白了就是一个目录,会放很多的文件,不是包 --怎么组织代码,怎么创建包,模块 --自动化测试用例放在哪里 --入口main,收集用例放在哪里 --测试数据,应该放在哪里 --测试报告放在哪里 -- 配置文件放在哪里 --日志文件放在哪里 -- excel操作 --托管提交到公司代码库 ...

weixin_40611700的博客 3411

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 82

手把手教你用三菱PLC控制JET伺服原点:从硬件接线到GXWORKS3程序调试

本文详细介绍了如何使用三菱PLC控制JET伺服系统实现原点回归功能,涵盖硬件接线、参数配置到GX Works3程序调试的全流程。通过实战指南,帮助工程师快速掌握伺服控制技术,提升工业自动化项目的实施效率。

weixin_30642561的博客 536

用Python写一个蛋仔派对自动弹琴脚本

引言(何从缘起):本身想写一个华为平板的主题来的在小妹前面耍酷,但是翻阅官方文档的时候却犯了难,有种12岁但是却力不从心的赶脚,这官方文档翻起来一本书厚啊有没有搞错!想要无伤一个下午就写出来显然是国足踢进世界杯——天方夜谭,所以既来之则安之借此契机不如就接触一下写脚本把,用脚本还可以定时抢券,秒换名刀复活甲,主打一个赋能吃喝玩乐,总之有好果子吃。。。

m0_53827815的博客 3247

嵌入式STM32控制电梯面板

嵌入式STM32控制电梯面板 用点阵来显示电梯向上还是向下运动,用数码管来显示楼层数(由于灯阵显示楼层数比较困难故用数码管代替)。当按下对应的按钮,就可以去到对应层数,可上升可下降。 #include "stm32f10x.h" #include "stm32f10x_exti.h" #include "stm32f10x_it.h" #define uint unsigned int #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10) #define

code_init_的博客 2112

Python入门教程39:教你使用distutils本地发布模块与模块安装的操作

*1.3.2模块的安装命令:**如果发给你朋友安装使用,首先要解压打包好的这个xhniu-1.0.tar.gz文件(首先选择解压当前文件夹),进的入xhniu-1.0文件夹目录,然后运行以下安装的命令。**1.1 包和模块的新建与命名规则:**首先在发布之前,确保你的模块已经经过充分的测试和代码审查,以确保其质量和稳定性。安装好之后,就可以dist里面看到打包好的模块了,后缀名为xhniu-1.0.tar.gz的文件,这个打包的模块,你可以发给你的朋友使用这个模块里面的功能函数了。↓ 视频教程如下 ↓。

我的Python教程 4110

Sigmastar平台WDR调试实战:从参数解析到鬼影消除的完整指南

本文提供了Sigmastar平台宽动态(WDR)技术的实战调试指南。针对逆光、运动场景下的核心痛点,系统性地解析了从多曝光采集、HDR融合到色调映射的完整管线,并重点阐述了如何通过调整曝光比、运动阈值与调整曲线等关键参数,有效消除运动鬼影、平衡暗部噪声与细节,最终实现清晰稳定的图像效果。

Jerry的专栏 930

Pytorch.nn.Linear 解析(数学角度)

pytorch.nn.Linear 是一个类,下面是它的一些初始化参数 in_features : 输入样本的张量大小 out_features : 输出样本的张量大小 bias : 偏置 它主要是对输入数据做一个线性变换。 y=xAT+b y=xA^T+b y=xAT+b 这里A是权重矩阵,b是偏置。他们都是根据 in_features 生成 测试代码: m = torch.nn.Linea...

Medlen 1万+

Python学习随笔1(anaconda上手)

目录 python入门 创建一个project 安装一些package 快捷键 Anaconda 创建虚拟环境 迁移虚拟环境 开关env中的某个环境 更新虚拟环境中的python版本 删除某个虚拟环境 删除虚拟环境中的某个包 Pytorch框架 cv2 读取图片 给图片文件换名和后缀 python对文件读写 python入门 创建一个project 一定要在一个单独的文件夹内创建项目,否则环境文件会起冲突。 安装第三方库的时候记得关掉vpn,否则会报错。 永久更改下

HJK___hjk的博客 306

Android Audio基础——概览(一)

音频系统使用该属性进行音频焦点控制、音频通道路由及音量控制等,一般在应用开发中常用。mUsage // 指定播放声音原因和作用。用来控制焦点、路由及音量决策(USAGE_MEDIA、USAGE_VOICE_COMMUNICATION、未知等)mContentType // 指定声音来源的类型(CONTENT_TYPE_MOVIE、CONTENT_TYPE_MUSIC、语音、发音、未知等)mSourcemFlags //指定音频框架如何对音频播放应用效果DeviceType。

小旭的专栏 3174

把 OpenAI Chat Completions 的 Base URL 改到 TaoToken,官方格式不用动

base_url/baseURL 改指 TaoToken 后,OpenAI Chat Completions 官方格式不用动。在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建 Key,Python openai 库只改 base_url、Node.js 改 baseURL 即可。

weixin_29069575的博客 169

YOLOv11 改进 | 模块即插即用

YOLOv11 是一种单阶段目标检测算法,其核心设计目标在于实现检测速度与精度的平衡。其架构延续了 YOLO 系列“端到端”检测的思路,通过统一的网络结构完成特征提取、多尺度特征融合及最终的边界框预测与分类任务。骨干网络(Backbone)颈部网络(Neck)和检测头(Head)。骨干网络负责从输入图像中提取多层次的语义特征。

u012133341的博客 3123

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

10.25 脚本 整理2024全年 GITHUB每周热门项目

ROOT_DIR = "/storage/emulated/0/Android/LLS_2025/Xmind/临时/github-weekly-rank-main/2024"save_name = f"2024-{year_month}-{letter} github热门项目.txt"脚本 (^._.^)ノ (^._.^)ノ (^._.^)ノ。5.结果保存为 .txt (如 2024-01-A GITHUB热门项目## ---------- 唯一需要改的 ----------

2503_93413701的博客 486

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android多种多渠道打包工具对比

多渠道打包只有在Android开发中才会有,iOS中直接放在AppStore。 而渠道也是Android开发中一个比较重要的环节,其主要作用就是方便统计、标记。根据不同的渠道加载不同的数据。 目前市面上多渠道打包大致有一下几种: 1:通过开发工具编译获得(Eclipese、As、等等) 2:Ant插件; 3:ApkTool 4:bash shell 5:Lua 6:Python 7:Gradle 8:Maven

Mr_ladeng的博客 4691

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

测试开发工程师成长日记003 - 接口自动化框架搭建

周末也要学习的小张同学

zy01051314的博客 318

Day7 模块

一、模块定义、导入、优化详解   1.定义   模块:本质上就是 .py结尾的python文件,(文件test.py对应的模块名为test)     用来从逻辑上组织python代码(变量、函数、类、逻辑:实现一个功能)。   包: 本质上就是一个目录(一个必须有__init__.py文件的目录)     用来从逻辑上组织模块。   2.导入方法 im...

baiduipuyan1331的博客 161

菜单中英文对照

  文件(File)菜单   New>>新建,可以创建一个新的flash文件。   Open...>>打开,用以打开flash文件及某些相关文件。   Open as Library...>>以库文件格式打开,打开已经存在的flash文件,但只输入并显示它的库,并不是把整个文件打开来编辑。   Close>>关闭,当然只用来关闭当前文件...

weixin_30414635的博客 399

只改标签不动结构:用图论与Python复刻Simon Patterson的语义重映射艺术

地图从来不只是地理的复制,而是一种经过设计的信息模型。在图论中,任何交通网络都可以抽象为节点与边构成的图结构,而信息传递的关键往往不在于结构本身,而在于节点承载的语义。英国艺术家Simon Patterson的作品《The Great Bear》正是这一理念的极致体现:他保留伦敦地铁的完整拓扑关系,仅将站名替换为哲学家人名或喜剧演员,便彻底重构了观者的认知路径。这种“只改标签不动结构”的操作,对应技术领域中的语义重映射,在数据可视化、知识图谱建模以及信息架构设计中具有极高的迁移价值。通过Python与Net

weixin_34185320的博客 322
上一篇: Python 小技巧:计时函数
下一篇: Python 多线程与多进程入门指南
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值