当前位置: 首页 > 面试题库 >

为什么要同时使用os.path.abspath和os.path.realpath?

斜高翰
2023-03-14
问题内容

在多个开源项目中,我看到人们确实os.path.abspath(os.path.realpath(__file__))在获取当前文件的绝对路径。

但是,我发现os.path.abspath(__file__)os.path.realpath(__file__)产生相同的结果。os.path.abspath(os.path.realpath(__file__))似乎有点多余。

人们使用它是有原因的吗?


问题答案:

os.path.realpath 在支持它们的操作系统上取消引用符号链接。

os.path.abspath只需从路径中删除类似.和的东西,即可..提供从目录树的根到命名文件(或符号链接)的完整路径

例如,在Ubuntu上

$ ls -l
total 0
-rw-rw-r-- 1 guest guest 0 Jun 16 08:36 a
lrwxrwxrwx 1 guest guest 1 Jun 16 08:36 b -> a

$ python
Python 2.7.11 (default, Dec 15 2015, 16:46:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> from os.path import abspath, realpath

>>> abspath('b')
'/home/guest/play/paths/b'

>>> realpath('b')
'/home/guest/play/paths/a'

符号链接可以包含相对路径,因此需要同时使用两者。内部调用realpath可能会返回包含嵌入式..部件的路径,abspath然后将其删除。



 类似资料:
  • 问题内容: 据我所知,Tornado是一台服务器和一个框架。在我看来,一起使用Flask和Tornado就像添加另一个抽象层(更多的开销)。人们为什么同时使用Flask和Tornado,有什么优势? 问题答案: 据我所知,Tornado是一台服务器和一个框架。在我看来,一起使用Flask和Tornado就像添加另一个抽象层(更多的开销)。人们为什么同时使用Flask和Tornado,有什么优势?根

  • 问题内容: 有没有之间的差异和。如果我进行双重布尔检查,这种方法是正确的还是多余的?有没有更短的方法来做同样的事情? 问题答案: 这是完全多余的。或多或少简写,并且是类似于。即做相反的事情,再加上一个额外的检查值的 真实性 。 换句话说,与相同,但是如果变量不存在,则不会发出警告。这就是该函数的重点:进行布尔比较,而不必担心设置变量。 手册说得像这样: 与的相反, 只是未设置变量时不生成警告。 您

  • 问题内容: 我的问题是为什么python为什么同时使用引用计数和gc的标记和清除?为什么不只是标记和扫描? 我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会在某种程度上加快标记扫掠并立即获得内存。不知道我的猜测是否正确? 有什么想法吗? 非常感谢。 问题答案: Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为CPython)。其他版本,例如Jyth

  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的

  • 问题内容: 什么是Unix时间戳?在PHP中,使用日期时,该函数输出一些整数值- 那是什么?我尝试了解这一点,但无法获得满意的答案,尤其是为什么我们需要使用转换日期。 问题答案: 什么是Unix时间戳 简而言之,Unix时间戳是一种跟踪时间(以秒为单位)的方式。此计数从1970年1月1日UTC的Unix Epoch开始。因此, Unix时间戳仅仅是特定日期和Unix Epoch之间的秒数 。还应该

  • 问题内容: 我注意到,Oracle JDK中使用了许多Java 8方法,如果给定的对象(参数)为,则会在内部抛出该方法。 但是,如果取消引用对象,则将被抛出。那么,为什么要做这个额外的null检查并抛出 ? 一个明显的答案(或好处)是它使代码更具可读性,我同意。我很想知道在方法开始时使用的其他原因 。 问题答案: 因为您可以这样做使事情变得 明确 。喜欢: 或更短: 现在您 知道了 : 当 成功使