我试图将一个整数值传递给 python 的 subprocess.call 方法:
subprocess.call('samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam')
'-bq' 之后的参数必须是一个整数值。但是我相信 subprocess.call 一直将它视为一个字符串,所以我不断收到错误“TypeError:bufsize 必须是一个整数”。
如何让 subprocess.call 将“1”解释为整数值?
这与您输入的整数无关;您错误地调用了该函数。您需要将命令作为一个序列,一个列表传递:
subprocess.call(['samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam'])
但是,这不会被 shell 处理,因此输出重定向 (>
) 将不起作用。如果您想将该工具的输出定向到另一个文件,请使用 shell=True
并传入一个字符串:
subprocess.call('samtools view -bq 1 DS130.bam > DS130umr.bam', shell=True)
让 shell 处理,或者使用输出重定向:
with open('DS130umr.bam', 'wb') as redirected:
subprocess.call(['samtools','view','-bq', '1','DS130.bam'], stdout=redirected)
我是一名优秀的程序员,十分优秀!