擅长:python、mysql、java
<p>谢谢@cdarke,这解决了使用grep、wc等简单命令的问题,但是我太蠢了子流程.Popen在使用samtools等可执行文件提供数据流时工作。在</p>
<p>为了解决这个问题,我创建了一个包含管道的字符串,就像我在命令行中写的一样,例如:</p>
<pre class="lang-python prettyprint-override"><code>sam = '/Users/me/Documents/Tools/samtools-1.2/samtools'
home = os.environ['HOME']
inpath = "{}/Documents/Pythonstuff/Bam_count_tags".format(home)
stream_in = "{s} view -h {ip}/test.bam".format(s=sam, ip=inpath)
pyscript = "python {ip}/bam_tags.py".format(ip=inpath)
stream_out = "{s} view -bh - > {ip}/small.bam".format(s=sam, ip=inpath)
# Absolute paths, witten as a pipe
fullPipe = "{inS} | {py} | {outS}".format(inS=stream_in,
py=pyscript,
outS=stream_out)
print fullPipe
# Translates to >>>
# samtools view -h test.bam | python ./bam_tags.py | samtools view -bh - > small.bam
</code></pre>
<p>然后,我使用了<code>os</code>模块中的<code>popen</code>,这与预期一样工作:</p>
^{pr2}$