有人可以解释加入路径的规则吗,我对这些结果感到困惑:
print(os.path.join('\\\\192.168.1.1\\A\\B', 'C\\D', '\\E')) #\\192.168.1.1\A\E, B,C,D are thrown away
print(os.path.join('\\\\192.168.1.1\\', 'C\\D', '\\E')) #\\192.168.1.1\\E, C, D are thrown away
print(os.path.join('\\\\192.168.1.1', 'C\\D', '\\E')) #\E, \\192.168.1.1 is thrown away
print(os.path.join('C:\\A\\B', 'C\\D', '\\E')) #C:\E, A, B, C, D are thrown away
答案 0 :(得分:1)
绝对路径(例如'\\E'
)替换当前路径,而不是附加到当前路径。
答案 1 :(得分:0)
来自[Python 3]: os.path.join(path, *paths):
...
如果某个组件是绝对路径,则所有先前的组件都会被丢弃,并且连接将从绝对路径组件继续。在Windows上,遇到绝对路径成分(例如
<?php $client = new SoapClient('http://services.chromedata.com/Description/7b?wsdl'); $account = ['number'=>"", 'secret'=>"", 'country'=>"US", 'language'=>"en"]; $vin = $_POST["b12"]; $result = $client->describeVehicle([ 'accountInfo' => $account, 'vin' => $vin ]); echo "<pre>"; var_dump ($result); echo "</pre>"; // optional ?>
)时,不会重置驱动器号。如果组件包含驱动器号,则会丢弃所有先前的组件,并重置驱动器号。请注意,由于每个驱动器都有一个当前目录,所以r'\foo'
代表相对于驱动器os.path.join("c:", "foo")
C:
而不是(c:foo)
上当前目录的路径。
因此(在c:\foo
中,最后一个绝对路径(而 UNC 路径是绝对的)则丢弃了它之前的任何其他路径。