Python 2.5 subprocess.Popen 问题

标签 python subprocess

我正在尝试运行以下 Python 小脚本:

#!/usr/local/bin/python2.5
import sys, subprocess
child = subprocess.Popen("muscle -stable -FASTA",
                         stdin=sys.stdin,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE,
                         shell=(sys.platform!="win32"))
print child.stderr.read()
print child.stdout.read()

如果 stdin 不超过大约 3750 个字符,则效果很好。超过此限制,子进程将不再生成任何 stdoutstderr。如果我分别将它们切换为 sys.stdout 和 sys.stderr ,一切都会按预期再次工作。从命令行调用时,muscle 可执行文件会写入 stdoutstderr

有什么建议可能是什么原因以及如何解决这个问题吗? - 最好不要更新 Python,因为安装是在我访问权限有限的服务器上。

最佳答案

使用子项。 communicate(someinput)获得完整的输出;另请参阅文档中的“警告”框。如果您确实需要在写入 stdout 时以交互方式读取 stdin,那么(至少在 Windows 上)您可能无法使用 Python + 管道。

关于Python 2.5 subprocess.Popen 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5426487/

相关文章:

python - 数据框未正确附加

python 3.1 - 创建正态分布

python - 子进程调用 ls 时出错

python - 使用ffprobe在python中查找视频文件长度时如何解决文件路径错误?

python - 使用 python 来回与终端程序对话

Java子进程自行终止

python - 在 Google App Engine 中加载页面后删除 URL 参数

python - 如何在异步中并发运行任务?

python - Django +Celery +SQS -> boto.exception.SQSError : SQSError: 599 gnutls_handshake()

python - 将进程附加到列表(但不对其进行任何操作)会改变程序行为