我试图将一个整数值传入 python 的 subprocess.call 方法:
subprocess.call('samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam')
Run Code Online (Sandbox Code Playgroud)
'-bq' 后面的参数需要是一个整数值。但是我相信 subprocess.call 一直将其视为字符串,因此我不断收到错误“TypeError: bufsize must be an integer”。
如何让 subprocess.call 将“1”解释为整数值?
这与输入中的整数无关;您错误地调用了该函数。您需要将您的命令作为一个序列传递给一个列表:
subprocess.call(['samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam'])
Run Code Online (Sandbox Code Playgroud)
但是,这不会由外壳程序处理,因此输出重定向 ( >) 将不起作用。如果要将工具的输出定向到另一个文件,请使用shell=True并传入一个字符串:
subprocess.call('samtools view -bq 1 DS130.bam > DS130umr.bam', shell=True)
Run Code Online (Sandbox Code Playgroud)
让 shell 进行处理,或使用输出重定向:
with open('DS130umr.bam', 'wb') as redirected:
subprocess.call(['samtools','view','-bq', '1','DS130.bam'], stdout=redirected)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2927 次 |
| 最近记录: |