gpt4 book ai didi

python - 从 Python 脚本调用时 Perl 未完全执行

转载 作者:行者123 更新时间:2023-11-29 01:59:19 24 4
gpt4 key购买 nike

我有一个 Python 脚本,它调用一个 Perl 脚本来解析一些文件并生成输出文件。这些输出文件再次使用 Python 脚本上传到 MySQL 数据库。 Perl 脚本需要大约 5-7 分钟 来解析一些文件并生成 Python 用于上传的输出文件。

Python 脚本如下:

import subprocess
pipe = subprocess.Popen(["perl", "./parser.pl"], stdin=subprocess.PIPE)
pipe.stdin.close()

#Now, load the output files from parser.pl to database.

sql01 = """LOAD DATA LOCAL INFILE 'sequence.parsed' INTO TABLE nasequenceimp FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';"""

try:
c.execute(sql01)
conn.commit()
except StandardError, e:
print e
conn.rollback()

但是,Python 脚本似乎已终止,Perl 脚本继续解析文件。因此,Python 会报错 sequence.parsed does not exist

为什么 Python 脚本不等待 Perl 完成执行?

最佳答案

默认情况下,父进程不会等待 subprocess.Popen 生成的子进程。你应该调用:

pipe.wait()

subprocess.Popen 之后。它将等待子进程终止并让您的 python 脚本继续。

或者您可以只使用 os.system() 代替。

关于python - 从 Python 脚本调用时 Perl 未完全执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com