3

Any ideas why this will not join properly in Python 2.6 Win?

import os

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

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

Result:

\Folder2\1.txt

I was expecting the result to be "\\192.168.1.50\Shared\Folder2\1.txt" !

4

3 に答える 3

1

Join は便利な機能であり、あまりインテリジェントではありません。たとえば、パスの存在などは検証しません。いくつかの正式な規則に従うだけです。

あなたの質問の時点で、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

于 2012-08-12T14:52:15.250 に答える
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
于 2012-08-12T14:53:25.847 に答える
-1

多分それはこれをサポートしていません、あなたはそれを通常通りに使うことができます:

print myPath + myPath2 + myFile
于 2012-08-12T14:47:01.487 に答える