1

リモート サーバーのフォルダの内容を印刷しようとしています。私が使用したコードは次のとおりです。

srcserver = 'abc.com'
dyndir = '\\\\%s\\E$\\Backup\\' %(srcserver)
ls = glob.glob('%s*' %dyndir)
print ls

これを試すと、空の配列が返されます。この問題の解決を手伝っていただけませんか。

4

2 に答える 2

0

リモートサーバーのファイルへのアクセスは、実際には非常に複雑です! ある時点で、ソフトウェアはネットワーク接続の確立、認証、ファイルシステム コマンドのネットワーク パケットへの変換などを行う必要があります。このように、ローカル ファイル システムで行うように glob.glob を使用すると、基本的に Windows 仮想ファイル システムにすべての作業を任せることになります。うまくいかないことはたくさんあります (たとえば、Windows vfs は、ファイル システムにアクセスするためのこの比較的低レベルの方法よりも高いレベルでファイル システム コマンドをインターセプトしている可能性があります)。

どうしてもこのようにしたい場合は、質問に次の情報を追加する必要があります。

  • 正確なオペレーティング システム (この方法はおそらくかなり非移植的です)
  • 問題のリモート システムがスクリプトの実行前にユーザーによって既にマウントされているかどうか、または新しい接続を開こうとしているかどうか
  • リモートサーバーにアクセスするために認証が必要かどうか

調べると、これはPythonの質問というよりもWindowsの質問になり始めるため、私が考えることができない追加の関連情報がおそらくあります。Windows vfs ベースのソリューションを追求したい場合は、「Windows」と「SMB」や「CIFS」などのその他の関連キーワードを質問タグに追加することをお勧めします。

別の方法は、SMB/CIFS クライアントを使用して、Windows ファイルシステムを完全に排除することです。Python を使用して、smbclient などのコマンドライン クライアントを操作できます。または、Python ライブラリを使用してこれらのビットを処理することもできますが、この種の目的で Python を使用することはあまり一般的ではないため、一部のライブラリにはバグがあったり、サポートが不十分であったり、古くなっている場合があります。そのアプローチを試してみたい場合は、Google「Python SMB」。最初のいくつかのヒットはすべて、この問題に関連しています。

于 2013-09-25T06:59:54.963 に答える