Python 如何从批处理文件写入Windows网络共享?

Python 如何从批处理文件写入Windows网络共享?,python,windows,batch-file,Python,Windows,Batch File,我在本地计算机上有一个批处理脚本,它在Windows网络共享上调用Python脚本,应该在那里编写一个文件。如果在没有批处理文件的情况下运行Python脚本,它将成功运行。如果运行批处理文件,则会出现以下错误: Traceback (most recent call last): File "python_script.py", line 25 in <module> IOError: [Errno 13] Permission denied: 'outfile.txt' 我还尝

我在本地计算机上有一个批处理脚本,它在Windows网络共享上调用Python脚本,应该在那里编写一个文件。如果在没有批处理文件的情况下运行Python脚本,它将成功运行。如果运行批处理文件,则会出现以下错误:

Traceback (most recent call last):
File "python_script.py", line 25 in <module>
 IOError: [Errno 13] Permission denied: 'outfile.txt'
我还尝试了一个绝对路径,但我得到一个错误,即“找不到文件”:

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

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

绝对路径将起作用,但您只需要正确指定路径。在python中,反斜杠是转义字符,因此必须转义反斜杠或使用正斜杠:

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

请参见

感谢@nullability所起的作用,现在它将写入outfile。但是现在我在打开输入文件时遇到问题。我使用的是正斜杠,这是os.listdir的限制吗
files=[file for file for file in os.listdir('//server/subfolder/folder')if os.path.isfile(file)]for file in files:if filename_pattern.search(file):print file
手动运行脚本时,我正在读取的目录的绝对路径有效。同样,当运行批处理文件时,它找不到要读取的文件。奇怪的是没有错误,它只是写了一个空的输出文件。你能显示你的批处理文件以及你是如何运行它的吗?实际上你可以使用一个原始字符串,这样你就不必转义反斜杠:
outfile=open(r“\\server\folder\subfolder\outfile.txt”,“w”)
。注意路径字符串开头的
r
。bat文件包含一行:call“\\server\subfolder\folder\script.exe”(我编译成exe)。我有一个运行的print语句,所以我知道程序正在运行,但它会写一个空白的输出文件。我可能需要记录一个新问题,因为我使用的是os.listdir而不是Open
outfile = open("\\server\folder\subfolder\outfile.txt", "w")
outfile = open("//server/folder/subfolder/outfile.txt", "w")