Python 3.4,Django 1.7,Windows apache 2.4.12
我试图列出Windows共享驱动器上的所有文件(仅限某些用户),然后将几个文件写入共享驱动器。
我正在使用os.listdir来执行此操作。如果我只是在我的机器上运行Web应用程序,它会很好用,但是一旦它部署在实际的服务器上,它就会停止工作。
问题是Windows共享驱动器上的权限。用户必须先登录,以便我有他们的用户名和密码。
我的问题是如何使用用户名和密码提供os.listdir?
我尝试了os.listdir(&#39; // windows / share / drive / dir @ domanin / username:password&#39;)但系统会尝试查找文件而不是传递用户名和密码。< / p>
有人知道如何解决这个问题吗?或者我需要映射驱动器(如何使用凭证映射驱动器?),列出文件,写入文件,然后断开映射的驱动器?
非常感谢你。
答案 0 :(得分:2)
您应该查看net use
Windows命令。它允许您使用给定的凭据挂载任何网络资源。
在访问网络资源之前,您可以从Python net use
命令执行,如下所示:
net use \\computername\path\to\dir /user:username password
如果凭据正确,则可以访问网络资源,os.listdir()
将起作用。
如果给定资源已使用不同凭据挂载,则可能会出现一些问题。在这种情况下,您应该先卸载它们(net use \\computername\path\to\dir /delete
)
答案 1 :(得分:0)
根据Python manual os.listdir(path)
,只会将path
名称作为参数。它可能适用于本地使用Django测试服务器,因为在该环境中权限与使用Apache或Nginx等生产网络服务器不同。尝试查看以下预先存在的相关SO问题和答案 - 他们可能会为您提供一些指导,尤其是在Win框中:
What is the best way to map windows drives using Python?
python copy files to a network location on Windows without mapping a drive