python os.path.realpath 无法正常工作

2024-03-18

我有以下代码:

os.chdir(os.path.dirname(os.path.realpath(__file__)) + "/../test")
path.append(os.getcwd())
os.chdir(os.path.dirname(os.path.realpath(__file__)))

应该添加哪个/../test到 python 路径,并且它这样做了,并且随后使用 PyDev 在 eclipse 上顺利运行。

但是当我从控制台第二个 os.chdir 吃午餐时,同一个应用程序做了一些错误的事情,实际上错误的是os.path.realpath(__file__)因为它返回../test/myFile.py代替../originalFolder/myFile.py。当然我可以通过使用fixed来解决这个问题os.chdir("../originalFolder")但这对我来说似乎有点错误,但这适用于 Eclipse 和控制台。

附:我在用着os.getcwd()实际上是因为我想确保没有添加这样的文件夹,否则我根本不必切换目录

那么我的方法有什么问题或者我搞砸了什么吗?或者是什么? :)

提前致谢! :)


看看有什么价值__file__。它不包含脚本的绝对路径,它是来自命令行的值,因此它可能类似于“./myFile.py”或“myFile.py”。另外, realpath() 不会使路径成为绝对路径,因此在不同目录中调用 realpath("myFile.py") 仍将返回“myFile.py”。

我认为你应该这样做:

import os.path

script_dir = os.path.dirname(os.path.abspath(__file__))
target_dir = os.path.join(script_dir, '..', 'test')
print(os.getcwd())
os.chdir(target_dir)
print(os.getcwd())
os.chdir(script_dir)
print(os.getcwd())

在我的计算机(Windows)上我得到这样的结果:

e:\parser>c:\Python27\python.exe .\rp.py
e:\parser
e:\test
e:\parser

e:\parser>c:\Python27\python.exe ..\parser\rp.py
e:\parser
e:\test
e:\parser

Note:如果您关心兼容性(您不喜欢奇怪的路径错误),您应该使用os.path.join()每当您组合路径时。

Note:我知道我的解决方案非常简单(记住绝对路径),但有时最简单的解决方案是最好的。

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

python os.path.realpath 无法正常工作 的相关文章

随机推荐

  • axios 不发送 cookie

    我有两个应用程序 一个是用 Laravel 编写的服务器端应用程序 另一个是用 VueJS 编写的客户端应用程序 vue 应用程序使用 laravel 应用程序提供的 api 授权流程 用户尝试登录 服务器发送两个token给客户端 a a
  • Excel 2007 工作簿名称大小限制是多少?为什么?

    Excel 2007 中的工作簿名称的大小应该仅受内存限制 但事实似乎并非如此 最终 保存到某个名称的数组将变得足够大 以至于当您尝试保存时 您会得到 解释 此工作簿中的一个或多个公式大于 8192 个字符限制 请另存为二进制文件 好的 那
  • 操作大数据表中字符串的最佳方法

    我有一个 67MM 行的 data table 其中人名和姓氏用空格分隔 我只需要为每个单词创建一个新列 这是数据的一小部分 n lt structure list Subscription Id c 13 855 231 846 091
  • 为什么 Swift Array 与 AnyObject 兼容?

    考虑代码 struct S var f Int64 0 let coder NSCoder someCoder let a Int coder encodeObject a compiles let b Int64 coder encode
  • 命令绑定在动态 MVVM 上下文菜单中不起作用

    我是 WPF 新手 像许多其他人一样 我正在尝试绑定一个ContextMenu to an ObservableCollection创建动态上下文菜单 除了绑定之外一切正常Command财产给TheCommand的财产MenuItemVie
  • 即使在 IPv6 中使用 SO_REUSEADDR 后,套接字绑定也会失败

    我的应用程序需要在具有相同 IPv6 地址的同一端口上绑定一个套接字 我正在使用下面的代码来实现相同的目的 但是 第二次绑定会引发错误 地址已在使用中 顺便说一句 只有当我包含第一个套接字的侦听调用时 我才会收到此错误 如果没有监听调用 第
  • 如何以非root身份在worker/slave上运行Buildbot构建步骤

    当我以root身份运行它时 我在通过电子打包器构建电子时遇到问题 但是 当我以其他用户 例如流浪者 身份运行它时 它工作得很好 我已经问过有关该问题的问题here https stackoverflow com questions 3918
  • 将对象转换为 JSON,忽略某些(私有)属性

    我一直在使用 Dean edwards base js http dean edwards name weblog 2006 03 base 将我的程序组织成对象 顺便说一句 base js 非常棒 如果您以前没有使用过它 无论如何 我的问
  • GPS/GIS 计算:根据运动/每小时预测未来位置的算法?

    寻找资源或算法来在导航应用程序中计算以下内容 如果我当前的 GPS 位置为 0 0 并且我以 15 英里 小时的速度前进 32 度 我如何计算 10 秒后我的位置 i e GPSCoordinate predictedCoord GPSCo
  • 耙子中止!错误:必须是数据库的所有者

    我正在研究迈克尔 哈特尔的优秀作品tutorial http ruby railstutorial org chapters modeling and viewing users one sec 3auser validations但是当尝
  • SD卡中的文件路径

    我的 SD 卡上有 mp3 文件 如何在选择文件时从SD卡获取文件的路径 动态 就像用户单击列表视图中的文件一样 其路径会进入变量以供使用 public class PlayListActivity extends ListActivity
  • Angular Cli Webpack 桶文件无法解析

    我刚刚将我的 Angular 2 项目从 SystemJS 切换到 Webpack 现在使用 angular cli webpack 在修复了一些小问题之后 最大的症结似乎是我的桶文件不再按预期得到解决 IE 我一直在进行进口工作 例如 i
  • hmailserver 错误 - 与数据库的连接不可用

    亲爱的先生 我尝试在我的家用电脑上制作网络邮件服务器 所以我下载并安装 hmailserver 但是当我尝试连接它时 出现错误 与数据库的连接不可用 当我看到日志文件时 它有以下错误 请帮助我 ERROR 2920 2013 10 02 0
  • @FXML 注释和 FXMLLoader 类未解析为 Java 11 和 JavaFX 11 中的类型

    早些时候 我的项目曾经在 Java 8 上运行 但现在我使用 Java 11 和 JavaFX 11 现在自 Java 11 以来 JavaFX 已与 Java 解耦 我还没有下载 JavaFX SDK 但在 pom xml 中添加了以下依
  • 如何在不向下移动行的情况下将表情符号插入到 NSTextView 中?

    如何将表情符号插入NSTextView不向下移动线 如果我将表情符号字符插入NSTextView 整条线将向下移动几个像素 如果我删除表情符号字符 它会移回到原来的位置 另一方面 如果我将表情符号插入NSTextField 即使该行中的文本
  • 使用 IAM 角色时 AWS boto3 InvalidAccessKeyId

    我使用预先指定的帖子 网址上传到 S3 并从 S3 下载 预签名的 url post 是使用 Lambda 函数中的 boto3 生成的 它是使用 zappa 部署的 当我添加我的AWS SECRET ACCESS KEY and AWS
  • 如何在 Python 中从文件夹外部访问模块? [复制]

    这个问题在这里已经有答案了 如何从另一个文件夹访问模块 这是文件结构
  • wordpress获取当前用户

    我的 WordPress 目录中有一个用于某些模板应用程序的目录 apacheWWW wordpress jtpc 在我的应用程序中我想要 WordPress 当前用户 ID 我可以在一页中执行此操作 但在另一页中出现错误 这就是我获取用户
  • 硒 while 循环不工作

    所以我开始掌握 while 循环的窍门 但是当在 selenium 代码上使用 while 循环时 我遇到了不足 我几乎尝试将一个任务复制 10 次 代码如下 Main py from selenium import webdriver f
  • python os.path.realpath 无法正常工作

    我有以下代码 os chdir os path dirname os path realpath file test path append os getcwd os chdir os path dirname os path realpa