Python os.path.dirname 更改目录时返回意外路径

2024-04-02

目前我不明白,为什么 pythonsos.path.dirname像它那样行事。

假设我有以下脚本:

# Not part of the script, just for the current sample
__file__ = 'C:\\Python\\Test\\test.py'

然后我尝试获取以下目录的绝对路径:C:\\Python\\doc\\py

有了这个代码:

base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)) + '\\..\\doc\\py\\')

但为什么该方法os.path.dirname不解析路径,并打印出(print (base_path):

C:\Python\Test\..\doc\py

我期望该方法能够解析以下路径:

C:\Python\Test\doc\py

我只知道 .NET Framework 的这种行为,获取目录路径将始终解析完整路径并删除目录更改..\\。我在 Python 中有什么可以做到这一点?


调查os.path.normpath https://docs.python.org/2/library/os.path.html#os.path.normpath

通过折叠冗余分隔符和上层引用来标准化路径名,以便 A//B、A/B/、A/./B 和 A/foo/../B 全部变为 A/B。此字符串操作可能会更改包含符号链接的路径的含义。在 Windows 上,它将正斜杠转换为反斜杠。

原因os.path.dirname它的工作方式是因为它不是很智能 - 它甚至适用于 URL!

os.path.dirname("http://www.google.com/test")  # outputs http://www.google.com

它只是在最后一个斜线之后砍掉任何东西。它不会查看最后一个斜杠之前的任何内容,因此它不在乎您是否有/../在那儿的某个地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python os.path.dirname 更改目录时返回意外路径 的相关文章

  • 熊猫按 n 最大总和分组

    我正在尝试使用groupby nlargest and sum在 Pandas 中一起运行 但在运行时遇到困难 State County Population Alabama a 100 Alabama b 50 Alabama c 40
  • Vimeo API:获取下载所有视频文件的链接列表

    再会 我正在尝试从 Vimeo 帐户获取所有视频文件的列表 直接下载的链接 有没有办法在 1 GET 请求中做到这一点 好的 如果是API限制的话 就100倍 我有硬编码脚本 我在其中发出 12 个 GET 请求 1100 多个视频 根据文
  • 为什么 Mypy 在 __init__ 中分配已在类主体中进行类型提示的属性时不给出键入错误?

    这是我的示例 python 文件 class Person name str age int def init self name age self name name self age age p Person 5 5 但当我跑步时myp
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • Python 不考虑 distutils.cfg

    我已经尝试了给出的所有内容 并且所有教程都指向相同的方向 即使用 mingw 作为 python 而不是 Visual C 中的编译器 我确实有 Visual C 和 mingw 当我想使用 pip 安装时 问题开始出现 它总是给Unabl
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • Python 内置对象的 __enter__() 和 __exit__() 在哪里定义?

    我读到每次使用 with 时都会调用该对象的 enter 和 exit 方法 我知道对于用户定义的对象 您可以自己定义这些方法 但我不明白这对于 打开 等内置对象 函数甚至测试用例是如何工作的 这段代码按预期工作 我假设它使用 exit 关
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • 如何知道python运行脚本的路径?

    sys arg 0 给我 python 脚本 例如 python hello py 返回 sys arg 0 的 hello py 但我需要知道 hello py 位于完整路径中的位置 我怎样才能用Python做到这一点 os path a
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • iOS Playground 中的 NSUserDefaults

    iOS Playgrounds 似乎有一个奇怪的问题NSUserDefaults总是返回nil而不是实际值 在 iOS Playground 中 最后一行错误地返回nil import UIKit let defaults NSUserDe
  • 如何升级现有的 Flutter 应用?

    我有一个半年前构建的现有 Flutter 应用程序 我查了一下pubspec lock 它有这一行 sdks dart gt 2 10 0 110 lt 2 11 0 flutter gt 1 16 0 lt 2 0 0 所以我假设该应用程
  • sql server中事务回滚的机制是什么?

    sql server中事务回滚的机制是什么 数据库中的每个更新都会首先将一个条目写入包含更改描述的日志中 例如 如果您将列值从 A 更新到 B 日志将包含更新记录 类似于 在表 T 中 列 C 已从 A 更改为 B 以通过 id I 的事务
  • 获取ArrayList中重复项的数量

    例如 假设我有一个ArrayList可能包含以下值 x x x y y 现在我想要检索的是x and x我希望能够区分我所拥有的x or y因为实际上 我可以在 ArrayList 中拥有任何对象 并且我必须能够区分它们 我想做的是首先转换
  • 操作 struct tm 中的 tm_mon?

    我无法理解这个程序 即tm mon 1 part 我是 C 语言新手 通常我总是编写自己的小程序来应对我在遵循的课程书中设置的任何挑战 但我不得不咨询其他人来解决这个问题 它是课本和他们的代码 所以不是我的 我不明白为什么 1被添加到tm
  • node.js/MySQL:当我尝试插入数据库时​​,某些字符串编码(表情符号)抛出错误

    我正在运行一个 node js 脚本 该脚本从公共 数据库 它是一个 区块链 中提取数据 然后对其执行一些操作 然后将其插入到 MySQL 数据库中 我已经使用 MySQL 数据库UTF8 general ci编码 绝大多数数据都可以很好地
  • 对于每个循环:仅删除第一个附件

    在使用 for 每个循环复制附件后 我一直尝试删除 Outlook 中的附件 它只是在复制后删除第一个附件 但不会处理第二个附件 它只是下降到 End Sub Private Sub Items ItemAdd ByVal item As
  • 如何在 Laravel Vapor 应用程序中获取 HTTP 请求的 IP?

    我最近将 Laravel 应用程序从服务器移至 Vapor 此应用程序依赖于使用日志记录请求IP地址Request ip 但自从切换到 Vapor 后 所有 IP 都记录为 127 0 0 1 我查看了可信代理文档https laravel
  • 在 Observable 中 xhr.send() 之后获取服务器响应

    我实现了一种在 Angular 2 应用程序中发布文件的方法 它基于我找到的解决方案here https stackoverflow com a 35985489 2018084 由于 Angular 2 本身不支持文件上传 因此解决方案必
  • R 创建滑动窗口时间段内先前事件的统计

    任何人都可以帮助我解决使用 R 创建特定时间段内先前事件总和的问题吗 如果我不遵守协议 我深表歉意 这是我的第一个问题 我有一系列 ID 和活动日期 在真正的 df 中 事件是日期时间 但为了让事情更简单 我在这里使用了日期 我正在尝试创建
  • 谷歌图表增加y轴宽度增加

    如何增加 Google 图表 y 轴宽度 请找到图片 左侧全文未正确显示 请指导我 如何增加谷歌图表y轴宽度 https i stack imgur com jl1L2 jpg 需要调整图表和chartArea中的大小options 要为左
  • Visual Studio 2008 解决方案中的最佳项目数是多少?

    Visual Studio 2008 解决方案中的最佳项目数是多少 我们有一个 Visual Studio 2008 解决方案 目前约有 50 个项目 随着解决方案中的大部分项目由主应用程序的插件程序集组成 它可能会继续增长 如果一个解决方
  • JSON 数字正则表达式

    我正在尝试为 JSON 中的数字字符串编写正则表达式 我对编写正则表达式还是新手 我找到了 JSON 数字机器的图表 here http www json org 但我不知道如何攻击它 以下是正则表达式应找到的一些字符串 22 55 754
  • 已知为 iOS5 和 Storyboard 更新 MGSplitViewController 的努力?

    我正在开发一个 iPad 应用程序 需要隐藏 显示分割视图的主控制器 相关 SO 答案注释 Matt Gemmell 的MGSplitViewController https github com mattgemmell MGSplitVi
  • 即时视频结果

    我正在查询亚马逊的产品广告 API 以获取即时视频 流媒体 结果 一切工作正常 除了缺少一些信息 描述不包含在结果中 例如 在亚马逊上website电影 食品公司 http www amazon com Food Inc dp B002VR
  • 如何用 Perl 编写 HTTP 服务器?

    Perl 标准库 CPAN 或其他地方是否有 Web 服务器或 HTTP 服务器模块 我想我正在寻找Python 3的等价物http server模块 谢谢 此外HTTP 守护进程 http search cpan org perldoc
  • React Native 在多个并发 Android 模拟器上运行

    我想同时在至少 2 个 Android 模拟器上测试我的应用程序 我可以启动 2 个模拟器 但似乎找不到如何启动react native run android我的应用程序在 2 个带有 ADB 的模拟器上运行 如果可能的话我也希望能够运行
  • 确定两个列表是否包含相同的数字项而不进行排序

    我有两个列表 我需要确定它们是否包含相同的值而不进行排序 即值的顺序无关 我知道排序会起作用 但这是性能关键部分的一部分 项目值落在 2 63 范围内 我们总是比较相同大小的列表 但列表大小范围为 1 8 示例列表 A 0 0 4 23 1
  • 对在 django 中将 CSV 文件制作为 ZIP 文件感到困惑

    我有一个视图 它从我的网站获取数据 然后将其放入 zip 压缩的 csv 文件中 这是我的工作代码 没有 zip def backup to csv request response HttpResponse mimetype text c
  • Python os.path.dirname 更改目录时返回意外路径

    目前我不明白 为什么 pythonsos path dirname像它那样行事 假设我有以下脚本 Not part of the script just for the current sample file C Python Test t