3

这似乎是一个简单的问题,但我无法弄清楚。

我在远程服务器上设置了一个共享文件夹,以便该文件夹在 Windows 资源管理器中显示如下:\\server-name\shared-directory。我可以通过 Windows 资源管理器远程读取该文件夹并远程写入该文件夹。但是,当我尝试通过 python 脚本访问该文件时,我说该目录不存在。

我拥有服务器的管理权限,并允许自己访问共享驱动器(我通过 Windows 资源管理器复制文件验证了这一点)。

在python中,我按如下方式访问驱动器(尽管我尝试了几种不同的方法但没有成功):

os.access('\\\\server-name\\path-to-shared-directory', os.W_OK)

关于我可能做错了什么的任何建议?

编辑:

在回答问题时,我实际上是在尝试使用脚本复制文件,os.access 只是用于查看目录是否具有写访问权限。我使用的复制代码如下:

def copy_folder(src, dest):
    if not os.access(dest, os.W_OK):
        return(False)
    cmd = ['xcopy', '/E', '/J', '/Y', '/I', src, dest]

    p = subprocess.Popen(args=cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

    out, err = p.communicate()

    print 'out: %s' % out
    print 'err: %s' % err

    return(True)

copy_folder(my_source_directory, '\\\\server-name\\path-to-shared-directory')

这将返回“无效的驱动器规范”作为错误。

4

1 回答 1

2

通过您已经尝试使用的 UNC 路径访问文件应该没有问题,但我建议对其进行格式化以帮助转义:

src  = r'C:\path\to\source'
dest = r'\\server-name\path-to-shared-directory'

你不需要stdin

p = subprocess.Popen(cmd, 
        stdout=subprocess.PIPE, 
        stderr=subprocess.PIPE, 
        shell=True)

通常,您可以在 python 中对路径使用正斜杠,但由于您调用的是 shell 命令,因此仍然需要反斜杠。

于 2012-10-04T21:40:57.773 回答