Python 3.x Python os.path.join奇怪的行为,并将(“any_path”和“c:\”作为输入

Python 3.x Python os.path.join奇怪的行为,并将(“any_path”和“c:\”作为输入,python-3.x,os.path,Python 3.x,Os.path,因此,我正在创建一个伪登录系统,并且在os.path.join函数中遇到了一些错误 当输入“c:”或“d:”作为用户名输入时,它的行为似乎很奇怪,因为它会使根驱动器之前的任何路径字符串无效 因此,输入如下: >>> import os >>> os.path.exists( os.path.join( some_path, "this_is", "voided", "c:", "python34" ) ) True 将完全忽略其前3条语句 有什么办法可以避免

因此,我正在创建一个伪登录系统,并且在os.path.join函数中遇到了一些错误

当输入“c:”或“d:”作为用户名输入时,它的行为似乎很奇怪,因为它会使根驱动器之前的任何路径字符串无效

因此,输入如下:

>>> import os
>>> os.path.exists( os.path.join( some_path, "this_is", "voided", "c:", "python34" ) )
True
将完全忽略其前3条语句

有什么办法可以避免这种情况吗?

似乎是一个众所周知的问题

在Windows上,遇到绝对路径组件(例如r'\foo')时,不会重置驱动器号。如果某个组件包含驱动器号,则会丢弃以前的所有组件并重置驱动器号。请注意,因为每个驱动器都有一个当前目录,所以os.path.join(“c:,“foo”)表示相对于驱动器c:(c:foo)上当前目录的路径,而不是c:\foo

你可以试试看

似乎是一个众所周知的问题

在Windows上,遇到绝对路径组件(例如r'\foo')时,不会重置驱动器号。如果某个组件包含驱动器号,则会丢弃以前的所有组件并重置驱动器号。请注意,因为每个驱动器都有一个当前目录,所以os.path.join(“c:,“foo”)表示相对于驱动器c:(c:foo)上当前目录的路径,而不是c:\foo

你可以试试