Python:如果目录是符号链接,则 getcwd 和 pwd 给出不同的结果

2024-01-03

如果我的工作目录是符号链接,os.getcwd() and os.system("pwd")不给出相同的结果。我想用os.path.abspath(".")故意获取我的工作目录(或其中的文件)的完整路径,而不是得到与以下结果相同的结果os.path.realpath(".").

如何在 python 2.7 中获得类似的东西os.path.abspath(".", followlink=False) ?

示例:/tmp 是到 /private/tmp 的符号链接

cd /tmp
touch toto.txt
python
print os.path.abspath("toto.txt")
--> "/private/tmp/toto.txt"
os.system("pwd")
--> "/tmp"
os.getcwd()
--> "/private/tmp"

如何从相对路径“toto.txt”获取“/tmp/toto.txt”?


如果你想使用 os.system(),请使用os.system("/bin/pwd -L")获取当前工作目录的逻辑路径。

如果从 bash shell 运行,只需使用“$PWD”,或者从 python 使用os.environ["PWD"]无需分叉进程os.system().

But 这两个解决方案都假设您位于文件所在的目录中.

基于 Eric H 的界面构建:

import os,subprocess
def abspath(pathname):
    '''Return logical path (not physical) for pathname using Popen'''
    if pathname[0]=="/":
        return pathname
    lpwd = subprocess.Popen(["/bin/pwd","-L"],stdout=subprocess.PIPE, shell=True).communicate()[0].strip()
    return(os.path.join(lpwd,pathname))

def abspathenv(pathname):
    '''Return logical path (not physical) for pathname using bash $PWD'''
    if pathname[0]=="/":
        return pathname
    return(os.path.join(os.environ["PWD"],pathname))

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

Python:如果目录是符号链接,则 getcwd 和 pwd 给出不同的结果 的相关文章

随机推荐

  • findViewById 对于首选项布局返回 null

    我有一个首选项屏幕 responder generic xml 如下所示
  • 在图中查找长度为 k 的派系

    我正在处理约 200 个节点和约 3500 个边的图 我需要找到该图的所有派系 使用networkx的enumerate all cliques 对于最多 100 个节点的较小图形 它可以正常工作 但对于较大的图形 内存不足 但是 希望这个
  • 如何使用C比较十六进制值?

    我正在使用十六进制值 到目前为止 我知道如何打印十六进制值以及精度 现在我想比较十六进制值 例如 我正在将数据从文件读取到字符缓冲区中 现在我想比较缓冲区中数据的十六进制值 有这样的事吗 if hex buffer i gt 0X3F th
  • 在 Grunt.js 中,如何监视多个文件,但仅在更改的文件上运行任务?

    在学习如何使用的过程中grunt https github com cowboy grunt 我正在尝试制作一个简单的咖啡脚本观察器 编译器 问题是 如果我告诉watch任务是观察多个文件 其中一个发生变化 它将把所有文件传递给coffee
  • 本地无法测试云函数,模拟器启动失败 TypeError: _onRequestWithOpts is not a function

    当我尝试从项目中的函数目录启动 shell 进行本地测试时 模拟器会启动 但无法加载我的函数 当我运行 npm run build 时 我没有收到任何错误 怎么了 我尝试删除函数目录并使用 firebase tools cli 再次创建它
  • 如何使用谷歌地图为国家着色?

    我需要根据范围 例如 人口 为世界上不同的国家着色 Red gt 100 million Green 50 99 million Ash lt 50 million 如何才能做到这一点 我的开发环境是Rails3 请帮忙 我将附上地图的示例
  • 用于输入验证的正则表达式白名单 - 重音不敏感

    我希望能够将用户输入限制为有效字符白名单 但我不想阻止来自其他文化的人注册 到目前为止 我有这个 a zA Z0 9 它允许大多数法语口音 但拉丁字符集中的口音列表非常多 我更愿意使用白名单而不是黑名单 以防我错过一些东西 Note 这适用
  • dotnet run 具有特定 url 的网站

    如何指定使用 dotnet cli 来使用特定配置运行我的 Web 应用程序 我知道可以使用hosting json 但我没有找到任何文档如何执行此操作以及这与 dotnet cli 有何关系 看看这个样本 https github com
  • 如何使用 Twitter API V2 和 Tweepy Python 发布带有媒体(图片)的推文?

    我正在尝试使用 Twitter API V 2 和 Tweepy 创建我的第一个 Twitter 机器人 所以我可以发布简单的文本推文 但我还没有找到如何使用媒体 图片 发布推文 那么我该怎么做 我看到有人说 您无法使用 twitter A
  • 如何在 asp.net mvc3 中显示矩阵表?

    我正在进行一个小项目 涉及使用实体框架和 asp net mvc3 在矩阵视图中显示多对多关系数据库 涉及到的三个表是SalesPerson 行标签 Product 列标签 和Sales 如何在 asp net mvc3 中开发 生成这种视
  • 将内存中的 24 位图像转换为索引颜色

    我在内存中创建了一个格式为 Format24bppRgb 的图像 我将其保存为 PNG 大小为 24kb 如果我使用 Photoshop 将相同的图像保存为 24 位 PNG 则其大小大致相同 但如果我将其保存为仅 32 色的 8 位 PN
  • 如何生成锯齿状数组的笛卡尔积?

    我在弄清楚如何生成锯齿状数组的笛卡尔积时遇到了一些麻烦 我用谷歌搜索过 但我似乎找不到迭代语言的实现 所以我试图自己解决这个问题 但我遇到了障碍 让我们更清楚地定义问题 假设我有一个数组数组 如下所示 A 1 2 3 4 5 6 我该如何从
  • 会话范围的 Spring MVC 控制器上的 @PreDestroy

    Given a RestController像这样 RestController Scope session public class MyController PreDestroy public void onSessionDestroy
  • 如何在c#中绘制圆角矩形

    我正在使用这段代码来制作一个圆角矩形 但它只绘制了矩形的左上角和右上角 更没有完成下部的矩形 如何让它完整 充实 我应该做出哪些改变 public static Bitmap DrawRoundedRectangle Bitmap Imag
  • GO中如何检查切片是否在切片内部?

    我有以下代码 func main l1 string a b c l2 string a c l2 in l1 我可以使用循环和标志来检查这一点 但是有没有一种简单的方法来检查 l2 是否在 l1 内部 就像 python 命令 l2 in
  • Eclipse 调试 Android 不起作用

    大家好 我在调试 Android 应用程序时遇到 Eclipse 问题 我放置的所有断点都不起作用 应用程序不会停止 它们会因为未放置而被跳过 有办法让它们发挥作用吗 我有Win7 JDK 6u23 64位 Eclipse 3 6 64位
  • 计算MLLIB SVM多类概率

    我想知道如何在多类分类问题中使用 Spark MLLIB SVM 计算概率 文档显示没有这样的功能可用 LibSVM https stackoverflow com questions 7802556 regarding probabili
  • sql join 连接3个表

    这个有点奇怪 有人写了一条在我看来不应该工作的sql 但它确实有效 而且还返回了正确的结果 我写了一个简化的例子 但我认为它说明了要点 drop table client drop table transactions drop table
  • 这个 Urikind.relative 到底是什么意思

    我正在做的是 当我选择一行并单击显示按钮时 我将有一个 datagridview 我想显示图像以及我编写以下代码的一些信息 public partial class WpfWindow Window private UCPersons uc
  • Python:如果目录是符号链接,则 getcwd 和 pwd 给出不同的结果

    如果我的工作目录是符号链接 os getcwd and os system pwd 不给出相同的结果 我想用os path abspath 故意获取我的工作目录 或其中的文件 的完整路径 而不是得到与以下结果相同的结果os path rea