15

Windows でネットワーク ドライブからファイルを表示する際に問題があります。

path = "\\\\nexus\\File Server\\Technical\\MyDrive\\Software\\Releases\\%s\\%s\\" %(release, module)

\\nexus\ネットワーク ドライブです。

私の主な問題は、ユーザーが正しい変数を入力すると、要求されたディレクトリの内容 (「モジュール」の内容) を表示できないことです。

私が試したこと

  1. os.listdir(path)
    上記の行の問題は、Windows エラー [123] が返されることです。これは、ディレクトリ エラーが見つかりません。これは、listdir() がすべてのバックスラッシュを 2 倍にして、次のようになるためです。

     "\\\\\\\\nexus\\File Server\\\\Technical\\\\MyDrive\\\\Software\\\\Releases\\\\release\\\\module\\\\"
    
  2. print(glob.glob(path))
    私はそれがどのように機能するかを正確には知りませんでした:Pしかし、終了ディレクトリの内容ではなく、提供されたディレクトリを表示するだけのようです

      \\nexus\File Server\Technical\MyDrive\Software\Releases\release\module\"
    

os.walkただし、ベースディレクトリ/ディレクトリとパスの残りの部分をどのように定義するかという点で、その仕組みがよくわかりません

特記事項: 「モジュール」の内容は常に zip ファイルであり、通常、ディレクトリには最大 5 つの zip ファイルが含まれます。

4

3 に答える 3

21

XP PC、Python 2.7、SMB 共有でテスト済み\\myshare

os.listdir('\\\\myshare') # Fails with "WindowsError: [Error 53] The network path was not found"

os.listdir('\\\\myshare/folder') # Succeeds

repr()混乱の一部は、実際のパスではなくパスを示す WindowsError によって引き起こされる可能性があると思います-

>>> repr(path)
"'\\\\myshare'"
>>> str(path)
'\\myshare'

これが Python 3 と Unicode の問題である場合は、最初に文字列を修正することをお勧めします。

path = "\\\\myshare\folder"
path = bytes(path, "utf-8").decode("unicode_escape")
print os.listdir(path)

(残念ながら、Python 3 がインストールされていないため、これをテストすることはできませんが、動作するかどうかをお知らせください。回答を編集します)

于 2013-01-16T09:00:06.020 に答える