1

我正在尝试打印远程服务器中文件夹的内容。我使用的代码是:

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

当我尝试这个时,它返回一个空数组。你能帮我解决这个问题吗?

4

2 回答 2

1

你应该尝试使用面料

它提供到您的服务器的直接ssh连接,并允许您在远程服务器上运行命令,sftp用于文件传输,基本上所有您可以使用的事情ssh

一旦你安装了织物:

from fabric.api import run, settings

with settings(host_string="mybox-name"):
    run("ls /path/to/my/folder")

如果您使用的是上一张海报所暗示的 Windows,那么我建议您查看此 stackoverflow 票

于 2013-09-25T07:10:17.790 回答
0

访问远程服务器中的文件实际上非常复杂!在某些时候,软件必须建立网络连接、进行身份验证、将文件系统命令转换为网络数据包等等。如果您这样做,像在本地文件系统上一样使用 glob.glob,那么您实际上是依靠 Windows 虚拟文件系统为您完成所有这些工作。我并不惊讶这不起作用,因为有很多可能出错的地方(例如,Windows vfs 可能会在比这种访问文件系统的相对低级别的方式更高的级别拦截文件系统命令)。

如果您确实想这样做,那么您应该在您的问题中添加以下信息:

  • 您的确切操作系统(此方法可能相当不便携)
  • 在运行脚本之前,用户是否已经安装了有问题的远程系统,或者您是否正在尝试打开新连接
  • 是否需要对远程服务器进行身份验证才能访问它

可能还有一些我想不出的相关信息,因为当您查看它时,这开始更像是一个 Windows 问题而不是 Python 问题。如果您想寻求基于 Windows vfs 的解决方案,您可能需要在问题标签中添加“Windows”和一些其他相关关键字,例如“SMB”或“CIFS”。

另一种方法是使用 SMB/CIFS 客户端,将 Windows 文件系统完全排除在外。您可以使用 Python 来操作命令行客户端,例如 smbclient。或者您可以使用 Python 库来处理这些位,尽管使用 Python 来处理这类事情并不常见,因此某些库可能存在错误、支持不佳或已过时。如果您想尝试这种方法,请谷歌“Python SMB”;前几个命中都与这个问题有关。

于 2013-09-25T06:59:54.963 回答