我可以提供os.listdir的用户名和密码吗?

时间:2015-03-04 21:12:05

标签: python django

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>

有人知道如何解决这个问题吗?或者我需要映射驱动器(如何使用凭证映射驱动器?),列出文件,写入文件,然后断开映射的驱动器?

非常感谢你。

2 个答案:

答案 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