os.path.abspath 源码分析

Tornado框架Cookie_secret安全机制解析与漏洞利用实战 在Web应用开发中,Cookie是维持用户会话状态的核心机制,其安全性直接关系到身份认证的可靠性。Tornado框架通过HMAC签名算法实现安全Cookie,利用cookie_secret作为密钥对Cookie内容进行签名验证,确保数据完整性而非加密内容。这一设计在提供便捷会话管理的同时,若密钥管理不当或存在文件读取漏洞,攻击者可能通过信息泄露获取密钥,进而伪造任意用户身份Cookie,实现权限提升。文件读取漏洞常源于未过滤的用户输入,允许目录穿越访问敏感配置文件。在CTF挑战和真实安全评估中,这种组合漏洞 阅读详情

os.path.abspath(path) 官方文档的介绍:

Return a normalized absolutized version ofthe pathname path. On most platforms, this is equivalent to callingthefunction normpath() asfollows:normpath(join(os.getcwd(), path)).

New in version 1.5.2.

这个函数会返回标准化的绝对路径。在大多数平台,它等同于normpath(join(os.getcwd(), path)).,这个后文的源码中会讲到

应用场景:

项目结构:

hello_world---hello.py

        ----class.py

        ----xml_parse

                                     ----pom_parse.py

例子代码:

def my_print(params):
    print params+' abspath ', os.path.abspath(params)


if __name__ =='__main__':
    print 'os.getcwd()      ',os.getcwd()
    my_print('class_test.py')
    my_print('pom_parse.py')
输出结果:


注意:pom_parse.py真正的路径应该是 

d:\Django-workspace\hello_world\xml_parse\pom_parse.py

我们看看abspath源码:
# Return an absolute path.
try:
    from nt import _getfullpathname

except ImportError: # not running on Windows - mock up something sensible
    def abspath(path):
        """Return the absolute version of a path."""
        if not isabs(path):
            if isinstance(path, unicode):
                cwd = os.getcwdu()
            else:
                cwd = os.getcwd()
            path = join(cwd, path)
        return normpath(path)

else:  # use native Windows method on Windows
    def abspath(path):
        """Return the absolute version of a path."""

        if path: # Empty path must return current working directory.
            try:
                path = _getfullpathname(path)
            except WindowsError:
                pass # Bad path - return unchanged.
        elif isinstance(path, unicode):
            path = os.getcwdu()
        else:

1. 首先从nt 模块导入_getfullpathname 。nt 模块提供访问window操作系统的接口,_getfullpathname是win32接口win32API :win32api.GetFullPathName(path),

2.1如果导入不成功,说明程序不是运行在window平台上。重点来了:

if notisabs(path):
   
if isinstance(path,unicode):
        cwd = os.getcwdu()
   
else:
        cwd = os.getcwd()
    path = join(cwd
, path)
return normpath(path)

这段代码中getcwdu() 和getcwd 都是返回当前工作目录CWD,getcwdu()是unicode 编码,getcwd是string类型。 随后的join(cwd,path) ,把path 和当前工作目录连接

path = join(cwd, path)

 2.2如果在window 平台上

if path: # Empty path must return current working directory.
    try:
        path = _getfullpathname(path)
    except WindowsError:
        pass # Bad path - return unchanged.
elif isinstance(path, unicode):
    path = os.getcwdu()
else:
    path = os.getcwd()

 在我们的例子里,path = ‘pom_parse.py’ 不为空,所以调用 win32API :win32api.GetFullPathName(path)获得绝对路径。但是,

如果path=’ ’, win32api.GetFullPathName(path)会返回’’  ,而不是当前工作路径CWD。所以这里加上判断path 是否为空,并做处理。


参考链接:

http://woodpecker.org.cn/diveintopython/functional_programming/finding_the_path.html

https://mail.python.org/pipermail/python-bugs-list/2000-July/000897.html

https://docs.python.org/2/library/os.path.html?highlight=os.path.abs#os.path.abspath

http://my.oschina.net/cuffica/blog/33494



Python爬虫+FFmpeg实现m3u8视频下载完整方案 HLS流媒体协议是当前在线视频传输的主流技术,其核心原理是将视频文件分割为多个ts片段并通过m3u8索引文件组织播放。这种分段传输技术能够实现自适应码率切换和边下边播,在工程实践中需要解决m3u8解析、ts片段下载合并等关键技术环节。Python爬虫技术结合FFmpeg工具链,能够有效应对视频网站的反爬机制,实现稳定可靠的视频下载方案。该技术方案特别适用于教育视频存档、会议录像保存等应用场景,通过多线程下载和错误重试机制确保下载成功率。本文基于m3u8格式解析和FFmpeg视频处理的热门技术需求,详细讲解从 阅读详情

相关推荐

deepseek-harness实战教程:MCP配置、代码依赖分析与常见错误排查

在大模型工程化落地中,模型调用链路的稳定性与结果可复现性至关重要。MCP(Model Context Protocol)作为连接模型与本地工具的通用协议,正在成为智能体开发的基础设施。代码依赖分析则是理解仓库结构、辅助模型生成精准结论的关键技术,常与字符串清洗、数据聚合等数据处理流程结合使用。本文从工程实践视角出发,介绍如何基于 deepseek-harness 搭建可重复运行的模型分析流水线,涵盖环境安装、MCP 通信配置、依赖分析模块拆解,以及 pandas 对模型输出做后处理的典型代码模式。同时针对

weixin_30326741的博客 439

os.path.abspath()

os.path.abspath() 是 Python 中用于获取绝对路径的函数。它接受一个参数,即要转换为绝对路径的相对路径,并返回该相对路径的绝对路径。 示例: import os current_directory = os.getcwd() print(current_directory) # '/home/user/project' relative_path = 'file.txt'...

weixin_42584758的博客 6936

微信小程序逆向实战:从加密包获取到源码反编译全流程解析

逆向工程是软件安全与代码分析领域的重要技术,其核心原理在于通过分析程序的二进制文件或中间代码,理解其内部逻辑与数据结构。这项技术对于学习优秀实现、排查疑难问题、进行安全审计具有重要价值。在移动应用生态中,微信小程序因其独特的封装和加密机制,成为逆向分析的一个典型应用场景。小程序在PC端本地缓存时,会生成经过加密的.wxapkg包,其加密方案结合了AES-256-CBC和XOR算法,密钥与小程序AppID绑定。掌握其解密与反编译流程,能够帮助开发者穿透封装,直接分析其WXML、WXSS和JS源码的实现逻辑。本

weixin_34408624的博客 391

新手会踩的坑--os.path.abspath用法

os.path.abspath用法 当你想取指定文件或目录的绝对路径(完整路径),想起OS模块不是有个取文件绝对路径的方法os.path.abspath(),马上拿来用! 例:获取文件‘test.py’的完整路径 test.py的完路径是:D:\python_t\IO目录处理\test.py 看到结果就泪奔了,不是取绝对路径么?怎么不是真实的完整路径?上级目录不见了? 很多疑问。 再来看看例子: 例中:第1个打印的结果,就是我想要的。 但是这个是取当前文件的绝对路径(完整路径),实际应用中可能并非取当前

一~米的博客 10万+

Blender到Unity资产导出插件开发:从CATS修复到自定义插件实战

最近在开发一个从Blender到Unity的资产导出流程时,遇到了一个棘手的问题:社区里一个非常流行的插件 cats-blender-plugin 在某些版本下无法正常工作,导致角色模型的骨骼、形态键等数据无法正确导出。这直接卡住了整个美术资产管线的脖子。经过一番源码级的调试和修改,我不仅成功修复了它,还基于其核心逻辑,制作了一个更轻量、更专注于Blender到Unity工作流的增强插件。 本文将完整分享这次从“排坑”到“造轮子”的全过程。无论你是遇到类似插件兼容性问题不知如何下手的TA(技术美术),还是希

weixin_30321709的博客 887

Python 源码保护与分发实战:从 .pyd 编译到 .exe打包

Python 源码保护与分发实战摘要 本文介绍了两种关键技术来保护Python代码并简化分发流程: 使用Cython编译核心模块:通过将.py文件编译为.pyd二进制文件,提高代码安全性。步骤包括安装Cython、创建编译脚本、执行编译,并验证结果。编译后的模块可直接导入使用,同时隐藏原始代码。 使用PyInstaller打包为exe:将Python程序及其依赖打包成独立可执行文件,无需安装Python环境。介绍了基础打包方法、常用参数(如单文件打包、设置图标等),以及处理资源文件的解决方案。 这两种技术组

LDC,公众号【轻松学编程】 319

os.path.abspath(__file__)用法及意义

os.path.abspath(__file__) 作用: 获取当前脚本的完整路径 import os print(os.path.abspath(__file__) ) result: 注意: 只有当在脚本中执行的时候,os.path.abspath(__file__)才会起作用,因为该命令是获取的当前执行脚本的完整路径,如果在交互模式或者terminate 终端中运行会报没有...

liuskyter 6万+

PyInstaller 打包 Python 程序全攻略:从能跑到能交付的完整实践

Python 脚本在本地能跑,但交付给没有 Python 环境的同事时,常因缺少依赖或路径问题而失败。打包工具 PyInstaller 通过静态分析代码中的 import,将解释器、依赖库和脚本字节码封装为独立可执行的 exe 文件,让目标机器无需预装任何环境。这解决了工具脚本、桌面小应用和算法模型交付的最后一公里问题。理解 PyInstaller 的打包模型,掌握 spec 文件配置、资源路径处理、动态导入隐藏模块等关键技巧,能有效避免打包后闪退、缺失 DLL、被杀毒软件误报等问题。本文从实际工程出发,梳

weixin_34060741的博客 280

Python进阶:os.path模块助你驾驭文件路径操作,从此不再迷茫!

import os# 获取文件的修改时间modify_time = file_info.st_mtime # 获取文件的最后修改时间import os # 获取文件的修改时间 file_path = "/path/to/file.txt" file_info = os . stat(file_path) modify_time = file_info . st_mtime # 获取文件的最后修改时间 print(f"文件最后修改时间为: {

2401_84204413的博客 3324

QGC二次开发实战指南(一):从零构建自定义地面站界面

本文详细介绍了QGC二次开发实战指南,从零开始构建自定义地面站界面。通过QT和QML技术结合MAVLINK协议,开发者可以打造适合特定业务场景的无人机监控系统,提升操作效率与用户体验。文章包含环境搭建、界面设计、数据绑定等完整开发流程,是QGC二次开发的实用教程。

weixin_28693683的博客 496

活用QueryWrapper与@Select注解,构建MybatisPlus动态多表查询方案

本文深入探讨了如何结合MybatisPlus的QueryWrapper与@Select注解,构建高效灵活的动态多表关联查询方案。通过解析${ew.customSqlSegment}占位符机制,并设计通用的Service层封装,解决了复杂条件下多表查询的SQL拼接难题,显著提升了后台管理系统列表查询的开发效率与可维护性。

weixin_29291069的博客 271

【python】【os】【path】【绝对路径abspath】

是 Python 中用于获取文件。

wq6qeg88的博客 1513

STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。 总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

anquanyuanqqadsy的博客 6172

diagrams 中 Custom 节点深度实践:用本地图标与远程图标构建自定义架构图

本文为 diagrams 项目中「Custom 自定义节点」能力的技术指南,基于官方文档 [docs/nodes/custom.md](https://link.gitcode.com/i/8d31b989ef3aea693102d6d1eaa1b8fa) 并结合 [diagrams/custom/__init__.py](https://link.gitcode.com/i/482ad5c45e

gitblog_00172的博客 224

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5890

协方差矩阵

对两个类内协方差矩阵进行对角化,可以将它们变换为对角矩阵。这个过程可以通过对每个协方差矩阵进行特征值分解来实现,从而得到它们的特征向量和特征值,进而得到它们的对角矩阵形式。这个过程的意义在于,它可以帮助我们找到一个新的坐标系,使得在这个坐标系下,每个特征之间都是独立的,从而简化了计算。具体来说,当我们使用对角协方差矩阵作为特征向量的坐标系时,它意味着每个特征之间都是相互独立的,从而方便了进一步的分析和处理。在实际应用中,对角化协方差矩阵可以用于降维、特征选择和分类等任务。

m0_55196097的博客 1万+

基于LangChain的RAG企业内部知识库问答Agent实战:用Cursor+Claude 1小时搭通TaoToken配置

用 LangChain 搭 RAG 企业内部知识库问答 Agent,Cursor 配合 Claude 生成脚手架,TaoToken 统一 Key 接入对话与嵌入模型。本文给出 config.toml 与 settings.json 可复制骨架,含超时 3600 秒、chunk_size 800 等参数,并整理 502、超时、Agent 不检索等常见报错排查。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

Ceshi01的博客 10

从“能跑”到“好用”:一名 Python 开发者的工程化进阶之路【Python心得篇】

Python 早已不只是写脚本、跑数据的工具。后端服务AI Agent 编排层自动化平台核心语言数据与业务之间的“中枢层”区别只在于:你是用脚本方式,还是工程方式在写。如果你已经能写“能跑的 Python”,下一步,就是让它长期可跑、稳定可演进。Python 的真正价值不在于“写得快”,而在于能否支撑持续演进的工程实践。当代码从一次性脚本走向长期运行的系统,开发者必须从结构设计、职责拆分、性能意识和类型约束等方面进行系统性思考。

博客 1546

molten生产部署指南:gunicorn、静态文件、CORS与文件上传完整实践

molten 是一个轻量、可扩展且高性能的 Python API 框架。把它从开发环境搬到线上,核心就四件事:用 gunicorn 正确启动、用 WhiteNoise 提供静态文件、为前端跨域请求配置 CORS、以及稳妥地处理文件上传。本文按生产部署的真实步骤逐一讲清每一步该做什么。 [![molten 生产环境 API 文档界面:gunicorn 启动后可直接访问 OpenAPI 页面在线调试

gitblog_00702的博客 183

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 355

SKUA-GOCAD入门教程-第六节

DisplayElements窗口是用于浏览和处理项目数据的工具,包含多个数据浏览器,如模型列表、对象、未分类对象、属性数据及资源数据。

江洋大葱的博客 983

PyInstaller打包报错OSError: could not get source code的根因与解决方案

在Python开发中,inspect模块常用于获取对象源码,但打包成exe后常因源码文件缺失而抛出OSError。其原理是inspect.getsource依赖co_filename读取源文件,而PyInstaller将源码编译为字节码,运行时无.py文件。解决该问题对提升工程实践效率具有重要价值,尤其适用于使用dill序列化、动态代码生成或依赖源码分析的场景。本文针对PyInstaller打包后出现的could not get source code错误,系统梳理了四类触发场景,并给出补源码、路径重映射、

weixin_34319111的博客 273

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MemPalace 配置完全指南:从全局 config.json 到多后端向量存储与身份层

MemPalace 的配置体系分为三层:用户级全局配置(`~/.mempalace/config.json`)、项目级配置(`mempalace.yaml` 与 `entities.json`)、以及独立的身份文件(`identity.txt`)。本文基于仓库内的 [configuration.md](https://link.gitcode.com/i/8abe42aab9e0b022e107c

gitblog_00942的博客 201

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ContextMenuManager 右键菜单管理实战指南:一篇搞定清理、自定义与回滚

如果你的 Windows 右键菜单被第三方软件塞满了多余入口、想加一个自己的快捷项,或是不小心删掉了菜单想找回,ContextMenuManager 这款免费的 Windows 右键菜单管理工具就是为此设计的:文件右键、新建、发送到、打开方式、Win+X 场景都能管,勾选与取消之间,菜单由你做主。 ## 🚀 快速上手:三步跑起来 ### 第一步:选对版本再下载 程序分为 **.NET 3.

gitblog_00952的博客 158

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

os.path.abspath()函数的用法

os.path.abspath()函数的用法

Kelly_Ai_Bai的博客 2896

Python 中 os.path.abspath(__file__)与os.path.dirname()以及os.path.basename(__file__)的用法详解

os.path.abspath(file)与os.path.dirname()以及os.path.basename(file)的用法详解 os.path.abspath(_file_) os.path.dirname(file) 返回脚本的绝对路径 import os # 返回脚本绝对路径 print(os.path.abspath(__file__)) os.path.dirname() ...

wengmq的博客 9398
上一篇: python Logger 高级教程
yes1cpp
博客等级 码龄14年 15粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值