我正在尝试将整数值传递到 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)
关于python - 如何将整数值传递给 python 的 subprocess.call 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266616/