我试图将整数值传入python的subprocess.call方法:
subprocess.call('samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam')
'-bq'之后的参数需要是一个整数值。但是我相信subprocess.call会将它视为一个字符串,所以我不断收到错误'TypeError:bufsize必须是一个整数'。
如何让subprocess.call将'1'解释为整数值?
答案 0 :(得分:4)
这与输入中的整数无关;你错误地调用了这个函数。您需要将命令作为一个序列传递,列表:
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)