gpt4 book ai didi

python - 在 Python 中确保可靠路径的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 17:48:36 37 4
gpt4 key购买 nike

我对 Python 中处理路径的方式感到有点困惑。使用常见的构造行“~”或“.”或“..”,我经常遇到路径不被识别为有效或不存在的情况,尤其是当我将路径作为参数传递给 shell 命令时;但所有如果我总是做类似的事情,我的问题就会消失:

some_path = os.path.abspath(os.path.expanduser(some_path))

这是一个常见的——或者甚至是必需的——习惯用法,还是我只是在重新发明轮子?我真的应该期望无论我有什么 some_path,我都应该有上面的代码,然后再将它传递给任何(或至少大多数)使用它做任何事情的函数吗?

最佳答案

是的,您可以调用的大多数东西都期望通过该成语运行的路径。当您在 shell 中使用类似路径时(例如,当您执行类似 cat ~raxacoricofallapatorius/foo.txt 的操作时),它是 shell 本身 - 而不是 cat 或您可能运行的任何其他程序 - 执行路径规范化。

您可以简单地验证这一点 - 例如,

lvc@tiamat:~/Projects$ echo ~
/home/lvc

所以这确实意味着如果您希望获得以这些类型的变量作为输入的路径,您将需要自己进行预处理。另一种方法是通过 shell 运行命令,并准备好处理 带来的所有问题。

但是,至少在类 unix 系统上(Windows 的行为方式可能相同也可能不同),您不需要 执行此操作。.. - 这些可以被系统调用理解,shell 不会转换它们 - 所以,例如:

lvc@tiamat:~/Projects$ file ..
..: directory
lvc@tiamat:~/Projects$ file ~
/home/lvc: directory

请注意 file 看到 .. 没有变化,但是看到 ~ 的扩展形式。

这意味着如果您想要的只是直接在外部程序中工作的路径,通过 expanduser 和可能的 expandvars 传递它就足够了。如果您调用的程序将在与您的不同的工作目录中运行,您将主要希望调用 abspath

关于python - 在 Python 中确保可靠路径的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14168307/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com