python - 如何将整数值传递给 python 的 subprocess.call 方法?

标签 python subprocess

我正在尝试将整数值传递到 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/

相关文章:

python - 获取在另一个终端中执行的 python 进程的状态

Python:简化许多 if 语句

python - 在 Python 中将表示为 <number>[m|h|d|s|w] 的时间字符串转换为秒

python - 在 python 3 中使用 pip 导入运行时安装的模块

Python 多处理-为已完成的进程分配新函数?

python - 将 Python 标准 IO 暴露给子进程

python - 子进程对 SIGINT 信号的 react 不同

python - 对从Python中的对象获取值感到困惑

python - 如何将控制台脚本/入口点添加到调用类函数 python 的 setup.py

python - 如何限制 Django 错误邮件