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仍然显示该文件存在?
答案 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//B
,A/B/
,A/./B
和A/foo/../B
都变为A/B
。此字符串操作可能会更改包含符号链接的路径的含义。在Windows上,它将正斜杠转换为反斜杠。
这又只是字符串操作。如果您输入的内容以../
开头,则将导致os.getcwd()
结果中的元素被删除,等等。