2014-10-01 146 views
1

我在调用Windows网络共享上的Python脚本的本地机器上有批处理脚本,并且应该在那里写入文件。如果我运行没有批处理文件的Python脚本,它会成功运行。如果我运行该批处理文件,我得到这个错误:如何从批处理文件写入Windows网络共享?

Traceback (most recent call last): 
File "python_script.py", line 25 in <module> 
IOError: [Errno 13] Permission denied: 'outfile.txt' 

的Python脚本住在同一目录“outfile.txt”。

下面是从Python脚本代码:

outfile = open("outfile.txt", "w")  

我自己也尝试了绝对路径,但我得到一个错误的“文件未找到”:

outfile = open("\\server\folder\subfolder\outfile.txt", "w") 

我不要认为这是一个权限问题,因为如果我只是以同一用户的身份“手动”运行python脚本,它会将outfile写入网络共享。我使用批处理文件丢失了什么?

回答

3

当你“调用”python脚本时,你实际上是从当前目录执行它。由于我不认为你可以将cd映射到网络共享而不映射它,这可能会导致权限问题。

绝对路径将工作,但您只需要正确指定路径。在Python中,反斜杠是一个转义字符,所以你要么逃避你反斜线或使用正斜杠:

outfile = open("//server/folder/subfolder/outfile.txt", "w") 

Using Python, how can I access a shared folder on windows network?

+0

感谢那些工作@nullability,现在它写入OUTFILE。但是现在我在打开输入文件时遇到了问题。我正在使用正斜杠,这是os.listdir的限制吗?如果filename.pattern.search(文件): 打印文件(文件): 文件在文件中:'files = [文件在os.listdir ' – astra 2014-10-01 19:02:39

+0

手动运行脚本时,我正在阅读的目录的绝对路径有效。同样,在运行批处理文件时,它找不到要读取的文件。奇怪的是没有错误,它只是写一个空的outfile。 – astra 2014-10-01 19:29:42

+0

你可以显示你的批处理文件以及你如何运行它? – nullability 2014-10-01 19:31:41