删除文件后,为什么os.path.abspath()仍显示其路径?

时间:2018-08-28 13:09:55

标签: python file path

print(os.path.exists("77.txt"))
print(os.path.isfile("77.txt"))
os.path.abspath("77.txt") 


----------
False
False
'/home/nbuser/library/parent_dir/files_exercises/77.txt'

我删除了一个文件,为什么abspath仍然显示该文件存在?

1 个答案:

答案 0 :(得分:1)

os.path.abspath()不在乎路径是否存在 abspath()仅操纵字符串

如果输入路径不是绝对路径,则将当前工作目录(os.getcwd(),字符串)与输入路径合并以形成新的有效路径字符串。 这就是全部

来自os.path.abspath() documentation

  

返回路径名path的归一化绝对化版本。在大多数平台上,这等效于按如下方式调用函数normpath()normpath(join(os.getcwd(), path))

因此,这使用os.getcwd()path(返回字符串路径)与输入值os.path.join()连接起来。后者不进行任何文件系统检查:

  

智能地加入一个或多个路径组件。返回值是path*paths的任何成员的串接,每个非空部分的后面都有一个目录分隔符(os.sep),除了最后一个,这意味着结果只会结束如果最后一部分为空,则在分隔符中。如果某个组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。

因此,如果path是开始的绝对路径,则os.getcwd()的结果将被忽略。否则,在两个字符串之间最多插入一个os.sep字符串。然后将结果传递到os.path.normpath()

  

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

这又只是字符串操作。如果您输入的内容以../开头,则将导致os.getcwd()结果中的元素被删除,等等。