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

如何将整数值传递给python的subprocess.call方法?,python,subprocess,Python,Subprocess,我试图将整数值传递到python的subprocess.call方法中: subprocess.call('samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam') '-bq'后面的参数必须是整数值。但是,我相信subprocess.call会一直将其视为字符串,因此我不断收到错误“TypeError:bufsize必须是整数” 如何获取subprocess.call以将“1”解释为整数值?这与输入中的整数无关;您错误地调用了

我试图将整数值传递到python的subprocess.call方法中:

subprocess.call('samtools','view','-bq', '1','DS130.bam','>','DS130umr.bam')
'-bq'后面的参数必须是整数值。但是,我相信subprocess.call会一直将其视为字符串,因此我不断收到错误“TypeError:bufsize必须是整数”


如何获取subprocess.call以将“1”解释为整数值?

这与输入中的整数无关;您错误地调用了该函数。您需要将命令作为一个序列传入,一个列表:

但是,这不会由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)

这与输入中的整数无关;您错误地调用了该函数。您需要将命令作为一个序列传入,一个列表:

但是,这不会由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)

我能够正确地使用参数shell=True执行subprocess.call。然而,当我尝试使用输出重定向时,我得到了这个错误,ValueError:stdout参数not allowed,它将被覆盖。结果我改为这样做了,它成功了:使用打开的'DS130umr.bam','wb'作为sys.stdout:subprocess.check_output['samtools','view','-bq','1','DS130.bam']@JayKu12:对不起,我想用subprocess.call代替;您需要小心分配给sys.stdout;现在,您需要使用sys.stdout=sys来恢复原始值。\uuu stdout\uuu。我能够正确地使用参数shell=True执行subprocess.call。然而,当我尝试使用输出重定向时,我得到了这个错误,ValueError:stdout参数not allowed,它将被覆盖。结果我改为这样做了,它成功了:使用打开的'DS130umr.bam','wb'作为sys.stdout:subprocess.check_output['samtools','view','-bq','1','DS130.bam']@JayKu12:对不起,我想用subprocess.call代替;您需要小心分配给sys.stdout;您现在需要使用sys.stdout=sys.\uuu stdout\uuu恢复原始文件。