Python os.path.join对网络路径无法正常工作

时间:2012-08-12 14:32:40

标签: python

为什么这不会在Python 2.6 Win中正确加入的任何想法?

import os

myPath = "\\\\192.168.1.50\\Shared"
myPath2 = "\\Folder2"
myFile = "1.txt"

print os.path.join(myPath, myPath2, myFile)

结果:

\Folder2\1.txt

我期待结果为“\\ 192.168.1.50 \ Shared \ Folder2 \ 1.txt”!

3 个答案:

答案 0 :(得分:1)

加入是一种便利功能,它不是太聪明。例如,它不验证路径的存在等。它只遵循一些正式的规则。

根据您的问题,请在myPath2定义中删除额外的斜杠。

import os

myPath = "\\\\192.168.1.50\\Shared"
myPath2 = "Folder2"
myFile = "1.txt"

print os.path.join(myPath, myPath2, myFile)

给出\\192.168.1.50\Shared\Folder2\1.txt

普通路径会遇到同样的问题:

import os

myPath = "C:\\Shared"
myPath2 = "\\Folder2"
myFile = "1.txt"

print os.path.join(myPath, myPath2, myFile)

给出\Folder2\1.txt

答案 1 :(得分:1)

如果任何组件是绝对路径,则所有以前的组件(在Windows上,包括之前的驱动器号,如果有的话)都将被丢弃,并继续加入。

我需要从myPath2的开头删除斜杠,否则它将被树形化为绝对路径,myPath将被忽略!

import os

myPath = "\\\\192.168.1.50\\Shared"
myPath2 = "Folder2"
myFile = "1.txt"

print os.path.join(myPath, myPath2, myFile)

<强>结果:

\\192.168.1.50\Shared\Folder2\1.txt

答案 2 :(得分:-1)

也许它不支持这个,你可以正常使用它:

print myPath + myPath2 + myFile