Python 小技巧:路径标准化函数

Python pathlib路径处理实战:从os.path到对象化路径管理 路径处理是Python文件操作的基础能力,本质是结构化数据的构建与校验,而非简单字符串拼接。传统os.path方案存在类型不可知、平台耦合、操作割裂等工程缺陷;pathlib通过Path对象范式,实现跨平台路径构造、安全存在性检查、链式方法调用与IDE智能提示,显著提升可读性、可维护性与调试效率。其深度集成Python 3.4+类型系统、f-string及现代生态(如pandas、FastAPI、aiofiles),已成为数据科学、Web后端与自动化脚本的标准路径处理方案。本文聚焦pathlib在conda 阅读详情

开发目的

在实际工作中,笔者经常遇到特殊的文件夹路径或者文件路径,由于缺乏经验需要在此浪费较多时间。进而想要写一个路径标准化函数,用 pathlib 包替换 os 包,把输入路径转成标准的可读格式,即输入可能是带有双引号的路径或者路径间隔是“\”、“\”、“/” 等转成标准格式。

原代码

    def normalize_path(path):
        path = re.sub(r'^["\']|["\']$', '', path.strip())
        path = path.replace('/', '\\')
        path = path.replace('\\\\', '\\')
        return path

优化过程

1.0

  • 使用pathlib内置方法,这些方法通常是用C实现的,效率高
  • 优先考虑了绝对路径和相对路径、内存和避免Path的报错
from pathlib import Path
import os

def normalize_path(path_input: str) -> Path:
    """
    Convert input path string to standardized Path object.
    Handles quotes, different separators, and resolves relative paths.
    """
    # Remove quotes and extra whitespace
    clean_path = path_input.strip().strip('"').strip("'")
    
    # Convert to Path object and resolve to absolute path
    try:
        path = Path(clean_path).resolve()
        return path
    except (OSError, ValueError):
        # Return unresolved path if resolution fails
        return Path(clean_path)

2.0

  • 使用pathlib.Path自动处理不同操作系统的路径分隔符
  • 优化去除字符串两端的引号和空格
  • 当路径可解析时,使用resolve()方法解析相对路径和符号链接,返回最准确的解析结果
  • 当路径不可解析时,提供合理的回退方案,回退到使用absolute()方法
import os
import logging
from pathlib import Path
from typing import Union

def normalize_path(input_path: Union[str, Path]) -> Path:
    """
    标准化路径函数
    
    将带有各种引号、不同分隔符的路径转换为标准的Path对象
    处理以下情况:
    - 去除双引号、单引号
    - 统一处理"\\"、"/"和"\"分隔符
    - 解析相对路径和特殊符号(如".", "..")
    
    参数:
        input_path: 输入的路径字符串或Path对象
        
    返回:
        标准化的Path对象
    """
    # 如果已经是Path对象,直接返回
    if isinstance(input_path, Path):
        return input_path.resolve()
    if not isinstance(input_path, (str, Path)):
    	raise TypeError(f"输入路径必须是字符串或Path对象,收到 {type(input_path)}")
    	
    # 移除字符串两端的引号和空格
    path_str = str(input_path).strip(' \t\n"\'')
    # 使用Path创建路径对象,pathlib会自动处理不同平台的分隔符
    path_obj = Path(path_str)
    
    # 解析路径(解决相对路径、符号链接等)
	try:
	    return path_obj.resolve()
    except (OSError, PermissionError, FileNotFoundError) as e:
    	# 记录错误日志
        logging.warning(f"文件系统错误: {e}, 使用绝对路径作为回退方案")
        return path_obj.absolute() # 返回绝对路径作为回退方案
	except Exception as e:
	    logging.warning(f"路径解析失败: {e}, 使用绝对路径作为回退方案")
	    return path_obj.absolute() # 返回绝对路径作为回退方案
import os
import logging
from pathlib import Path
from typing import Union

def normalize_path(input_path: Union[str, Path]) -> Path:
    """
    Path normalization function.
    
    Converts paths with various quotes and different separators to a standardized Path object.
    Handles the following cases:
    - Removal of double quotes, single quotes
    - Uniform handling of "\\", "/", and "\" separators
    - Resolution of relative paths and special symbols (e.g., ".", "..")
    
    Parameters:
        input_path: Input path string or Path object.
        
    Returns:
        Normalized Path object.
    """
    
    # Type validation
    if not isinstance(input_path, (str, Path)):
        raise TypeError(f"Input path must be a string or Path object, received {type(input_path)}")
    
    # Return directly if already a Path object
    if isinstance(input_path, Path):
        return input_path.resolve()

    # Remove quotes and whitespace from both ends of the string
    path_str = str(input_path).strip(' \t\n"\'')
    
    # Create a Path object - pathlib automatically handles platform-specific separators
    path_obj = Path(path_str)
    
    # Resolve path (handles relative paths, symbolic links, etc.)
    try:
        return path_obj.resolve()
    except (OSError, PermissionError, FileNotFoundError) as e:
        # Log error
        logging.warning(f"Filesystem error: {e}, proceeding with absolute path as fallback")
        return path_obj.absolute() # Return absolute path as fallback solution
    except Exception as e:
        # Log error
        logging.warning(f"Unknown error encountered during path resolution: {e}, returning absolute path")
        return path_obj.absolute() # Return absolute path as fallback solution
Python pathlib路径处理:从字符串拼接到面向对象实践 路径处理是Python工程中高频且易错的基础能力,本质是跨平台文件系统抽象与逻辑路径建模的结合。其核心原理在于将路径由不可靠的字符串操作,升级为具备类型安全、平台自适应和行为契约的面向对象模型。pathlib作为Python 3.4+标准库内置方案,通过PurePath/Path分层设计、不可变链式构造及resolve/is_relative_to等健壮方法,显著提升路径操作的可预测性与安全性。它在配置管理、日志体系、CI/CD脚本及Web服务路径校验等场景中,成为规避FileNotFoundError、路 阅读详情

相关推荐

Python filter函数:惰性过滤与函数式数据处理实战

filter()是Python中实现惰性求值与函数式数据筛选的核心内置函数,其本质是接收布尔函数与可迭代对象,返回延迟计算的迭代器。相比列表推导式,它不立即加载全部数据,显著降低内存峰值,适用于日志流、IoT传感器数据、大文件处理等内存敏感场景;依托纯函数契约,天然支持可测试、可组合、可复用的条件链式叠加,契合现代数据管道与微服务架构需求。结合itertools、Pandas、Dask及异步生态,filter()成为连接数据源与业务逻辑的关键‘过滤开关’,在电商用户分析、金融实时风控、爬虫响应清洗等工程实践

mxdxm8899的专栏 485

Qt入门--在windows7-64系统上安装Qt

第一次接触Qt,安装了好几个版本,浪费了不少时间,编译手机APP时不通过,看到有网友说是系统兼容性问题,Qt只有32位版,都准备把系统换成32位的win7了,又重新装了一遍,呵呵,所以然成了!!! 重点:64位系统上是可能正常使用32位的Qt的 以下是在windows7-64位版本上安装Qt(32位的)配套软件,我主要是编写手机APP,所以只安装以下三个,VS...

5066

Hermes Agent工程实践:标准化函数调用与ChatML协议落地指南

函数调用(Function Calling)是大语言模型走向可靠Agent的核心能力,其本质并非简单API调度,而是LLM与外部系统间可验证、可审计、可回滚的工具契约。理解ChatML格式的关键在于突破‘提示词模板’认知,将其视为多角色协同的状态机通信协议——System/User/Assistant/Tool四角色语义隔离、<tool_call>分隔符定义刚性边界、<scratch_pad>强制目标导向规划,共同构成稳定Agent链路的基础设施。该范式显著降低参数错误率、提升工具调用成功率,并支撑金融、B

cmff98425的博客 384

Python将绝对路径转化为标准格式

Python将绝对路径转化为标准格式 在Python中经常遇到输入文件的绝对路径的情况,但是由于大多数绝对路径中含有反斜杠所以就会出现程序报错的情况,这里主要解决的就是绝对路径标准化问题。 01-如何快速获取绝对路径 下面是获取文件或文件夹绝对路径的快速方法: 1、鼠标单击选中要获取绝对路径的文件或文件夹 2、左手按住shift键,接着右手点击鼠标右键 3、这是会出现一个菜单栏,选择并点击其中的复制为路径即可复制当前选中的文件或者文件夹的绝对路径 如图: 02-绝对路径标准化 虽然我们获取到了文件或文件夹

☜lgl☞ 1095

Z分布:统计推断的通用标尺与机器学习标准化基石

Z分布即标准正态分布,是统计学中实现数据可比性与可解释性的核心工具。其本质是通过线性变换(Z = (X−μ)/σ)将任意正态分布映射至均值为0、标准差为1的统一坐标系,从而支撑概率计算、假设检验与不确定性量化。该原理直接赋能A/B测试显著性判断、异常检测阈值设定、置信区间构建及特征标准化等关键工程任务。在数据科学实践中,Z-score不仅是Scikit-learn StandardScaler的底层逻辑,更是连接模型输出与业务语言(如‘高出均值2.3个标准差’)的统计普通话。理解Z分布,就是掌握从原始数据到

agcozdwdfvds08078的博客 425

Python 2到3迁移实战:避坑指南与生产级落地策略

Python 3 不仅是版本升级,更是字符串模型、I/O 编码、数值语义和异常处理四大底层契约的重构。从 Unicode 默认化到真除法语义统一,其技术价值在于消除隐式转换风险、提升多语言兼容性与金融计算精度,并支撑高并发异步架构演进。典型应用场景覆盖电商对账、政务审批、风控建模等强一致性要求的生产系统,尤其在中文编码处理、HTTP 请求解析、财务分摊计算等环节易触发运行时崩溃。本文聚焦真实迁移中高频踩坑点——如 open() 编码缺失、print 重定向失效、bytes/str 混用报错,提供可验证、可灰

weixin_34289454的博客 1679

python 20 规范化目录

目录 规范化目录 1. 划归固定的路径: 2. 划分文件 2.1 seetings 配置文件 2.2 common 公共组件文件 2.3 src 主文件 2.4 starts 项目启动文件 2.5 类似register文件 ...

aipeng8174的博客 293

ArcGIS 10数据管理小技巧:除了.mpk,这些‘包’你都会用了吗?

本文深度解析ArcGIS 10中的五大核心打包工具,包括地图包(.mpk)、图层包(.lpk)、地理处理包(.gpk)、定位器包(.gcpk)和切片包(.tpk),帮助用户高效管理GIS数据。通过进阶技巧和实战案例,提升数据共享与协作效率,特别适合ArcMap用户和GIS项目团队。

weixin_30480075的博客 401

用python进行标准化

#机器学习-标准化 from sklearn import preprocessing import numpy as np X = np.array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1.]]) calculate mean X_mean = X.mean(axis=0) print(X_mean) calculate variance...

weixin_43214223的博客 2223

海上风电智慧运维实战:EHS标准化与TCM振动监测降本策略

状态监测与远程运维是工业设备健康管理的核心技术,通过传感器采集振动、温度等信号,结合故障诊断算法实现设备劣化趋势预测。其技术价值在于将被动维修转为预测性维护,大幅降低停机成本与安全风险。在海上风电场景中,EHS标准化体系与TCM振动监测系统协同,可实现85%故障远程复位,并通过边齿裂缝早期预警节省大部件更换费用。本文基于上海电气2017年实战经验,拆解EHS飞行检查、质量案例库、远程复位逻辑及振动趋势预警的工程落地方法。

weixin_34294649的博客 350

uds协议之can总线程序升级

uds协议简介 如何利用uds协议升级 升级流程 uds服务类型介绍

fangye945a的博客 1万+

python检查路径有效性

如果你提供的路径不存在,许多 Python 函数就会崩溃并报错。os.path 模块提供了一些函数,用于检测给定的路径是否存在,以及它是文件还是文件夹。 • 如果 path 参数所指的文件或文件夹存在,调用 os.path.exists(path)将返回 True,否则返回 False。 • 如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path)将返回 True,...

dongyu1703的博客 8203

星载SAR系统参数设计过程自动化方法研究

 本文提出了一种 SAR系统参数自动化设计的 方法。首先,针对部分参数仍需手工选取的现状 建立了最优化求解模型,并给出了 PRF 和波位位 置的优化选取结果,使参数设计流程更加高效便 捷。然后,针对 SAR 系统参数设计过程中部分技 术指标的评测结果不满足用户需求时无法自动调 节的现状,采用 PID 控制器对方位向天线尺寸、信 号带宽、PRF 等参数进行自动调节,使得方位分辨 率、距离分辨率、方位模糊比等技术指标向用户需 求值逐步靠近。通过仿真实验验证了该方法的可 行性,实现了SAR系统参数设计过程的自动化

qq_43416206的博客 1527

Tcl file命令:路径标准化与安全操作核心指南

在EDA自动化、FPGA脚本和遥感软件(如PolsarPro)开发中,路径处理是稳定性的底层基石。Tcl的file命令并非传统文件I/O接口,而是一套纯字符串级的路径解析与重构工具,其核心价值在于跨平台路径标准化、无歧义拼接及存在性验证。理解file normalize的五层消毒机制、file join/file split的无损逆运算关系,以及file exists与file type的双重校验逻辑,可系统性规避‘no such file or directory’等高频错误。尤其在DC GUI、Viva

weixin_33898876的博客 416

NI数据采集卡测电流的三种‘姿势’:直接连接、外接分流电阻还是用电流互感器?看完这篇不再纠结

本文全面解析了NI数据采集卡在电流测量中的三种主流方案:直接连接、外接分流电阻和电流互感器。通过对比精度、带宽、隔离等关键参数,结合NI-DAQmx软件生态,为工业自动化、电力监测等场景提供选型指南和实战技巧,帮助工程师优化测量系统设计。

weixin_30882895的博客 423

ADS2020实战:手把手教你搭建交叉耦合VCO并分析相位噪声(附避坑指南)

本文以ADS2020软件为例,提供了交叉耦合压控振荡器(VCO)从原理图搭建到相位噪声分析的完整实战指南。详细讲解了核心器件选择、谐波平衡与瞬态仿真的关键设置,并重点剖析了相位噪声的仿真方法与优化方向。文中附有详细的避坑指南,帮助初学者和工程师高效完成VCO设计与仿真验证,避免常见错误。

p5l2m9n4o6q的博客 283

3个Python小技巧

引言Python 是从事数据科学生态系统工作的人们的首选语言。Python 之所以成为该领域的主要选择,有几个原因,比如易于学习的结构、简单的语法和丰富的第三方库选择。我最喜欢 Pytho...

Warmer_Sweeter 187

深信服桌面云实战:从零部署到高效运维的配置全景指南

本文详细介绍了深信服桌面云从零部署到高效运维的全流程配置指南,涵盖硬件规划、平台部署、虚拟桌面发布、终端管理及性能优化等关键环节。特别强调了双万兆网络架构、分布式存储配置和智能调度功能的应用,帮助用户实现高性能、高可用的虚拟桌面环境。

weixin_28568819的博客 403

Python项目路径管理:动态获取根目录的4种方法与最佳实践

在Python项目开发中,文件路径处理是影响代码可移植性和可维护性的基础技术。其核心原理在于理解脚本运行时的上下文环境,特别是当前工作目录与脚本文件所在目录的区别。基于`__file__`变量和`os.path`模块构建相对路径,能有效避免因执行位置不同导致的`FileNotFoundError`。这一技术的工程价值在于确保项目在不同操作系统、部署环境和团队协作场景下的健壮性。常见的应用场景包括配置文件加载、数据文件访问和模块导入。本文聚焦于**动态获取项目根路径**这一关键需求,系统梳理了四种核心方法:基

weixin_34392435的博客 290

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

以上内容详细介绍了,使用NRF24L01实现1对1单向通讯、1对1双向通讯、1对多双向通讯。

Joseph Wen的博客 7391

Transformer模型详解

​本文主要介绍Transformer系列,从基础到理论,对注意力机制进行总结并解释《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention。文章的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 5317

【Python】所有文章传送门(持续更新...)

【Python】所有文章传送门

森林的博客——在完成之前,似乎总是不可能的~ 1074

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 923

teamai-cli:面向团队的AI Agent标准化CLI基建工具

AI Agent 已从单点实验走向组织级落地,但配置不一致、知识库更新不同步、权限难管控、环境差异大等问题严重阻碍规模化复用。teamai-cli 以命令行工具为载体,将 Git 作为配置中心,通过声明式 YAML、继承式配置契约与原子化 CLI 命令(如 teamai kb、teamai deploy),实现 AI 能力在中型技术团队中的版本可控、权限可溯、部署可灰度。它不替代模型或 Prompt 工程,而是构建‘让 AI 可靠复用’的最小可行协作协议,天然适配 DevOps 流程与腾讯 Hunyuan

weixin_34302798的博客 370

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

聚类分析实操指南:从数据标准化到K-Means结果评估的完整流程

在数据科学和机器学习项目中,聚类分析是一种核心的无监督学习方法,其目标是将数据划分为具有相似特征的组群,从而揭示数据中潜在的结构和模式。然而,实际应用聚类算法时,很多人容易忽视关键的前置条件和评估环节。数据标准化作为距离计算的基础,决定了量纲差异是否会被错误放大;而K-Means作为最常用的聚类算法,其K值选择、初始中心设置以及对簇形状的敏感性问题,直接影响聚类结果的可靠性。本文从数据准备、距离度量、算法选型到SPSS实操与质量评估,系统梳理了聚类分析中的关键技术点,并结合行业实践讲解肘部法则与轮廓系数的应

weixin_33762130的博客 347

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Python小技巧】-PyCharm配置专业开发规范模板完全指南

本文详细介绍了PyCharm开发模板的配置指南,包含三大核心模板类型:实时代码模板、文件模板和代码风格模板。文章通过专业术语与生活化比喻相结合的方式,讲解了模板配置的必要性和具体步骤,包括如何创建Python类模板、设置标准文件头注释等实用技巧。同时提供了PEP 8代码规范建议和团队共享配置方法,帮助开发者从个人编程习惯提升到团队协作的专业水平,实现代码标准化和开发效率提升。

【javatoai17819112191】→Java && python && AI Agent工程师 1182

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: Python 处理蒙特卡洛模拟数据并绘制图表
下一篇: Python 小技巧:路径检查函数
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值