我正在使用子过程模块从shell调用程序,该子过程模块将二进制文件输出到STDOUT.

我使用Popen()调用程序,然后将流传递给Python包(称为“ pysam”)中的一个函数,不幸的是它无法使用Python文件对象,但可以从STDIN中读取.所以我想做的是将shell命令的输出从STDOUT转到STDIN.

如何在Popen /子过程模块中完成此操作?这是我调用shell程序的方式:

p = subprocess.Popen(my_cmd, stdout=subprocess.PIPE, shell=True).stdout

这将读取“ my_cmd”的STDOUT输出,并在p中获得流.由于我的Python模块无法直接从“ p”读取,因此我尝试使用以下命令将“ my_cmd”的STDOUT重定向回STDIN:

p = subprocess.Popen(my_cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True).stdout

然后,我调用我的模块,该模块使用“-”作为STDIN的占位符:

s = pysam.Samfile("-", "rb")

上面的调用仅意味着从STDIN读取(表示为“-”)并将其读取为二进制文件(“ rb”).

当我尝试此操作时,我只是将二进制输出发送到屏幕,并且看起来Samfile()函数无法读取它.即使我删除对Samfile的调用,也会发生这种情况,所以我认为这是我对Popen的调用而不是下游步骤.

编辑:为了回答答案,我尝试了:

sys.stdin = subprocess.Popen(tagBam_cmd, stdout=subprocess.PIPE, shell=True).stdout

print "Opening SAM.."

s = pysam.Samfile("-","rb")

print "Done?"

sys.stdin = sys.__stdin__

这似乎挂起.我得到的输出:

Opening SAM..

但它永远不会超出Samfile(“-”,“ rb”)行.知道为什么吗?

任何想法如何解决?

编辑2:如果有帮助,我会添加到Pysam文档的链接,我真的无法弄清楚.文档页面为:

有关流的具体说明在这里:

尤其是:

“””

Pysam不支持从真正的python文件对象读取和写入,但是它支持从stdin和stdout读取和写入.以下示例从stdin读取并写入stdout:

infile = pysam.Samfile( "-", "r" )

outfile = pysam.Samfile( "-", "w", template = infile )

for s in infile: outfile.write(s)

它还将与BAM文件一起使用.以下脚本将stdin上的BAM格式的文??件转换为stdout上的SAM格式的文??件:

infile = pysam.Samfile( "-", "rb" )

outfile = pysam.Samfile( "-", "w", template = infile )

for s in infile: outfile.write(s)

注意,只有文件打开模式需要从r更改为rb.

“””

因此,我只想从Popen读取stdout的流,并将其重定向到stdin,以便可以使用Samfile(“-”,“ rb”),因为上面的部分说明是可能的.

谢谢.

python输出重定向_使用Python子进程重定向标准输出到标准输入...相关推荐

  1. python输出方格_使用Python实现LBM(格子法)方腔驱动流

    使用Python实现LBM(格子法)方腔驱动流 Python的不足: Python的最大优势也可能是它最大的弱点:它的灵活性和无类型的高级语法可能导致数据和计算密集型程序的性能不佳.-- 动态类型化解 ...

  2. python输出运行时间_分析python程序运行时间的几种方法

    最早见过手写的,类似于下面这种: 1 import datetime 2 3 def time_1(): 4 begin = datetime.datetime.now() 5 sum = 0 6 f ...

  3. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  4. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  5. python输出可执行文件_重定向-禁止在Python调用中输出可执行文件

    重定向-禁止在Python调用中输出可执行文件 我有一个名为B的二进制文件,该文件在调用时会生成输出. 如果从Bash shell调用它,则大多数输出将受到A > /dev/null的抑制.所有 ...

  6. python bottle框架 重定向_微型 Python Web 框架: Bottle

    Bottle 是一个非常小巧但高效的微型 Python Web 框架,它被设计为仅仅只有一个文件的Python模块,并且除Python标准库外,它不依赖于任何第三方模块. 路由(Routing):将请 ...

  7. python requests 重定向_认识Python最最最常用语重要的库Requests

    Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它.下面我们来认识这个库 Requests requests是Python最为常用的http请求库,也是极其简单的.使用 ...

  8. python 网页重定向_小试牛刀:python爬虫爬取springer开放电子书.

    首先声明,本文旨在记录反思,并没有资源,代码也不具有借鉴意义(水平实在不行. 某天,水群的时候发现群友发了一个文件,里面是疫情时期springer开放的免费电子书名单,同时还附有下载链接,总共有400 ...

  9. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解

    问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...

  10. python 打印类型_让Python输出更漂亮:PrettyPrinter

    PrettyPrinter是Python 3.6 及以上版本中的一个功能强大.支持语法高亮.描述性的美化打印包.它使用了改进的Wadler-Leijen布局算法,和Haskell打印美化库中的pret ...

最新文章

  1. 斯坦福连续发了四年的AI报告,今年讲了什么?
  2. python grid用法_Python numpy.mgrid函数方法的使用
  3. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...
  4. 记一次某APK的恶意WIFI攻击
  5. python怎么获取lol皮肤名称_LOL手游免费皮肤获得方法 LOL手游皮肤怎么获得
  6. Win7打印时文档被挂起的解决方法
  7. 最详细的YOLO论文笔记
  8. freetextbox的问题两个
  9. post 下载文件 (excel)
  10. GoDaddy域名续费省钱妙招及取消隐私保护的方法
  11. windows电脑自动安装第三方软件-联想客服建议解决办法
  12. 机器学习第六回——无监督学习
  13. python爬取qq空间相册图片_如何用 Python 爬取 QQ 空间说说和相册?
  14. Android客户端入门开发
  15. 12306为什么买票这么难
  16. Photoshop抠图(磁性套索工具及几个常用案例)
  17. p5140大吉大利 晚上吃鸡
  18. 计算机组成原理之计算机最基本的工作原理
  19. iOS7适配问题总结
  20. c语言考试系统设计报告,C语言课程设计(单项选择题标准化考试系统)报告

热门文章

  1. Flex 与外部的数据通信(HTTPService,URLLoader和URLRequest)
  2. 成为Oracle 10g DBA之路
  3. VC通用控件自适应屏幕类
  4. vue4 库模式打包_Steam“小模式”游戏库回归 界面轻快简洁可随时切换
  5. linux使用中的问题 --- (Unable to establish SSL connection)
  6. mybatis框架的搭建简单步骤,还有其他的各项配置说明,简单易懂,仅作为个人参考,不作为网络学习借鉴
  7. Mybatis的xml映射文件,sql的模糊查询的实现(两种方式)占位符拼接,concat关键字
  8. python按位与怎么算_基础的十进制按位运算总结与在Python中的计算示例
  9. 台湾“比基尼登山客”遗体运出 山友接其“回家”
  10. OC 计算幂集 - 递归法