首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当从Python脚本调用时,Perl没有完全执行。

当从Python脚本调用时,Perl没有完全执行。
EN

Stack Overflow用户
提问于 2013-10-08 05:20:25
回答 1查看 141关注 0票数 2

我有一个Python脚本,它调用一个解析一些文件并生成输出文件的Perl脚本。同样,使用Python将这些输出文件上载到MySQL数据库中。Perl脚本使用5-7 mins来解析一些文件并生成输出文件,这些输出文件是Python用来上传的。

Python脚本类似于:

代码语言:javascript
复制
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完成执行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 05:30:04

父进程不等待subprocess.Popen默认生成的子进程。你应该打电话给:

代码语言:javascript
复制
pipe.wait()

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

或者你可以直接用os.system()代替。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19239645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档