我想下载一个文件然后压缩它。在我的代码中,我有一个子进程命令来下载文件,然后我有一个 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