【发布时间】:2013-11-28 04:28:23
【问题描述】:
到目前为止,我已经获得了很多帮助,并且能够成功地编写 Python 脚本。该脚本基本上调用一个 Windows 可执行文件,然后执行一些操作,例如从远程服务器拉下一些文件。在脚本的末尾,我有一个函数可以进行压缩并将检索到的文件移动到另一台服务器。到目前为止,脚本运行良好,但现在看起来我遇到了障碍。
脚本基本上接受 ParentNumber 作为输入并找到 1 个或多个 ChildNumber。一旦收集了 ChildNumbers 的列表,脚本就会重复调用带有该数字的 windows 可执行文件,直到它完成为所有这些文件提取数据。
如上所述,我为存档、移动文件和电子邮件通知构建的函数在脚本末尾被调用,如果只有一个 ChildNumber,该函数可以正常工作。如果有很多 ChildNumber 并且当可执行文件移动到第二个 ChildNumber 时,命令行有点将其视为结束并使用如下所示的新行进行统计:
.........
C:\Scripts\startscript.py
Input> ParentNumber
Retrieval started
Retrieval finished
**Email Sent Successfully**
Preparing ParentNumber @childNumber
C:\Scritps\ParentNumber123\childNumber2
Retrieval Started
Retrieval finished
.........
`
如果您看到电子邮件发送成功消息上方的脚本流程仅显示在第一个 ChildNumber 下,这意味着它在脚本完成之前被调用。
我想要的实际行为是,一旦处理了所有 ChildNumber,就应该调用所有 ArchiveMoveEmailFunction,但不确定哪里出错了。
我的 ArchiveMoveEmailFunction 函数如下,它位于脚本中所有其他行的结尾:
def archiveMoveEmailNotification(startTime, sender, receivers):
"""
Function to archive, move and email
"""
Code for Archive
Code for Move to remote server
Code for email
archiveMoveEmailNotification(startTime, sender,receivers)
如果我在这里遗漏了一些内容来指定何时执行此函数,请告诉我。如前所述,如果 ParentNumber 只有 1 个 ChildNumber,它完全可以正常工作,因此不确定第二次检索跳转是否会导致一些问题。有没有办法让这个函数等到脚本中的其余函数被调用,或者将这个函数完全移动到另一个脚本并从主脚本调用该函数是合乎逻辑的?
这里是exe调用部分:
def execExe(childNumb):
cmd = "myExe retriveeAll -u \"%s\" -l \"%s\"" % (childNum.Url(),childAccount.workDir))
return os.system(cmd)
def retriveChildNumb(childNumb):
#Run the retrive
if not (execExe(childNumb)==0):
DisplayResult(childNumb,3)
else:
DisplayResult(childNumb,0)
return 0
对此的任何输入想法都非常有帮助。
【问题讨论】: