我有一个在IDLE中运行时可以运行的ArcPy脚本,但在作为计划任务运行时会失败。这是问题部分:
outPath = os.path.abspath(r"X:\GroupDirs\0731\GIS_CORE\PUPS")
log.write("Output path: {}\n".format(outPath))
try:
outDir = os.path.join(outPath, "utiliquest{}".format(date))
if not os.path.exists(outDir):
os.makedirs(outDir)
log.write("Created scratch and output")
except:
fail_log(log)
当我在IDLE中运行它时,它正确输出,生成目录,并继续执行。
Output path: X:\GroupDirs\0731\GIS_CORE\PUPS
Created scratch and output
当它作为计划任务运行时,日志文件具有正确的目录,但os.makedirs(outDir)
命令无法执行:
Output path: X:\GroupDirs\0731\GIS_CORE\PUPS
Failed at 09/24/14 14:41:45
PYTHON ERRORS:
Traceback info:
File "C:\Batch Processes\IRTHnet\Batch_CopyData.py", line 64, in <module>
os.makedirs(outDir)
Error Info:
[Error 3] The system cannot find the path specified: 'X:\\'
每次都在同一台机器上运行,因此X驱动器指向相同的位置。
为什么这会导致失败,以及我可以做些什么来修复/规避?
答案 0 :(得分:0)
每次都在同一台机器上运行,因此X驱动器指向相同的位置。
这不遵循。驱动器映射是每个会话。如果您已设置Window以在登录时恢复驱动器映射(这是大多数人所做的,因为至少在XP到7中,在Explorer中的“Map Drive”对话框中有一个“登录时重新连接”的复选框),然后除非您以同一用户身份登录,否则X驱动器不会指向同一位置。
你可以设置系统范围的驱动器映射,这些映射将在启动时重新连接而不是登录,但这不是微不足道的(在不同的Windows版本上可能会有所不同),并且它也会导致你真的不想处理的一系列权限问题。
请参阅MSDN上的Services and Redirected Drives,这不是直接您在此处尝试做什么,但确实很好地解释了这些问题,并链接到许多其他有用的文档。
另一种解决方案是使用UNC路径,例如r'\\Server\share\GroupDirs\0731\GIS_CORE\PUPS'
。这不是始终适当的(例如,您可能希望在不同的计算机上将不同的共享安装到X:
,并让您的脚本始终使用挂载到X:
的任何一个,但是当它是,它通常是最简单的。