Py3 shutil.make_archive命令在子进程之前运行.波彭



我想下载一个文件然后压缩它。在我的代码中,我有一个子进程命令来下载文件,然后我有一个 shutil 命令来压缩它。但是在执行时,shutil 命令首先运行。

注意:"MyDownloadScript.pl"是一个 Perl 脚本,用于下载所需的文件。出于此任务的目的,我必须使用此脚本进行下载。

subprocess.Popen(['perl', 'C:\gitrepo\BuildScripts\MyDownloadScript.pl', '-branch', 'BranchName'])
    
    
shutil.make_archive(('{}\OutputZIP'.format('outputPath'), 'zip', 'C:\startingFolder', 'startingFile.dmg')
    

尽管代码中的函数排序,shutil 命令始终首先运行。以下是我在不同情况下运行脚本时发生的情况:

1( 如果不存在文件:

  • 脚本抱怨找不到.dmg文件
  • .dmg文件在以下时间后下载
  • 未生产压缩

2(如果我之后再次运行脚本(当.dmg存在时(

  • ZIP 文件是从.dmg创建的
  • 重新下载.dmg

为什么这些函数似乎乱序运行?任何想法/建议将不胜感激。

subprocess.Popen()是非阻塞的。因此,它会生成一个进程,并立即转到脚本中的下一行。请尝试subprocess.call()

subprocess.call(['perl', 'C:gitrepoBuildScriptsMyDownloadScript.pl', '-branch', 'BranchName'])
    
    
shutil.make_archive(('{}OutputZIP'.format('outputPath'), 'zip', 'C:startingFolder', 'startingFile.dmg')

u2028

最新更新