这似乎是一个简单的问题,但我无法搞清楚。
我在远程服务器上设置了一个共享文件夹,以便该文件夹显示在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')
这会将“无效的驱动器规格”作为错误返回。
答案 0 :(得分: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命令,所以仍然需要反斜杠。