我有一个python脚本,它根据脚本从图像元数据收集的参数自动化Erdas图像处理软件。 python脚本将这些参数收集到列表中,该列表将被写入批处理文件,然后运行批处理文件,该文件告诉Erdas软件处理图像。当我在IIS目录之外运行它时,脚本运行完美。但是,当我在IIS目录中运行脚本时,脚本会部分运行,但在尝试运行批处理文件时会给我一条错误消息。仅仅是一个FYI,我到处寻找解决这个问题的方法。我尝试过更改文件夹和文件权限以及IIS管理器设置,但没有运气。以下是错误消息:
Traceback (most recent call last):
File "python_page.py", line 1018, in <module>
main()
File "python_page.py", line 1002, in main
getAtmCorrectBatchFile(AtmCorrectBatchlist)
File "python_page.py", line 912, in getAtmCorrectBatchFile
f = open(basePath + '/atm_batch_process.bat', 'w')
IOError: [Errno 13] Permission denied: 'C:/inetpub/wwwroot/cgi-bin/atm_batch_process.bat'
以下是发生错误的代码。我最困惑的是错误位于创建批处理文件的getAtmCorrectBatchFile()
函数中,但是当脚本试图调用它下面直接列出的RunAtmCorrectBatch()
函数时会出现错误。此脚本已成功创建批处理文件并将其保存在cgi-bin目录中,那么为什么错误会在创建批处理文件的函数中而不是尝试运行批处理文件的文件中?
编辑:我可以右键单击cgi-bin目录中的批处理文件,然后选择run,它会成功输出已处理的图像,只是出于某些原因,当python脚本尝试运行批处理文件时,这不起作用
def getAtmCorrectBatchFile(batchlist):
f = open(basePath + '/atm_batch_process.bat', 'w') #line 912
for i in range (0, len(batchlist)):
f.write(str(batchlist[i]).replace('\\', '/') +'\n')
f.close()
def RunAtmCorrectBatch():
try:
from subprocess import Popen
p = Popen("/atm_batch_process.bat", cwd=basePath)
stdout, stderr = p.communicate()
except WindowsError:
pass