我已经写了一些代码来在多个文件上运行一个程序(cutadapt)。但是,对于它尝试运行的每个文件,它都会给出以下错误:“cutadapt:error:unrecognized arguments”。 在MacOS、Python3.7.3上运行
如果我在同一个程序中打印语句,在终端中作为单个调用复制它,那么它就可以工作了。有人知道我做错了什么吗?你知道吗
import glob
import subprocess
fastq_folder = "/path/2019.01_spades_output_pathodetect/FASTQ_trimming"
listoffiles = glob.glob(fastq_folder + "/*.gz")
for fastq in listoffiles:
input_file = fastq
output_file = fastq.replace("_001.fastq.gz", "_001CUT20.fastq.gz")
output_file = fastq.replace("2019.01_spades_output_pathodetect/FASTQ_trimming/", "2019.01_spades_output_pathodetect/FASTQ_trimming/CUT20/")
print("cutadapt", "--cut 20", "-o", output_file, input_file)
subprocess.run(["cutadapt", "--cut 20", "-o", output_file, input_file])
所以终端的输出是:
cutadapt --cut 20 -o /path/2019.01_spades_output_pathodetect/FASTQ_trimming/CUT20/AWGS09281_S20_L001_R2_001.fastq.gz /path/2019.01_spades_output_pathodetect/FASTQ_trimming/AWGS09281_S20_L001_R2_001.fastq.gz
Run "cutadapt --help" to see command-line options.
See https://cutadapt.readthedocs.io/ for full documentation.
cutadapt: error: unrecognized arguments: /path/2019.01_spades_output_pathodetect/FASTQ_trimming/AWGS09281_S20_L001_R2_001.fastq.gz
然后,当我复制打印的对账单时,它会起作用:
cutadapt --cut 20 -o /path/2019.01_spades_output_pathodetect/FASTQ_trimming/CUT20/AWGS09281_S20_L001_R2_001.fastq.gz /path/2019.01_spades_output_pathodetect/FASTQ_trimming/AWGS09281_S20_L001_R2_001.fastq.gz
This is cutadapt 2.3 with Python 3.7.3
Command line parameters: --cut 20 -o /path/2019.01_spades_output_pathodetect/FASTQ_trimming/CUT20/AWGS09281_S20_L001_R2_001.fastq.gz /path/2019.01_spades_output_pathodetect/FASTQ_trimming/AWGS09281_S20_L001_R2_001.fastq.gz
Processing reads on 1 core in single-end mode ...
[ 8<-------] 00:00:06 490,635 reads @ 13.6 µs/read; 4.42 M reads/minute
Finished in 6.71 s (14 us/read; 4.39 M reads/minute).
您需要将所有参数分开;
" cut 20"
传递一个包含开关及其值的参数(它告诉程序它收到了一个名为cut 20
的开关)。如果在命令行中,您确实在引号中传递了" cut 20"
,以防止空格将其拆分为程序argv
的单独部分(在您的示例中,您显然没有这样做),那么您只能将其作为单个参数传递。你知道吗把它分成
" cut", "20"
,它应该可以工作。你知道吗您的代码将
cut 20
作为单个参数传递给cutadapt,显然无法处理。(从cutadapt的参数解析器的角度来看,它可能认为您试图指定一个名为“cut 20
”的选项,但该选项不存在。)您需要将参数一分为二:相关问题 更多 >
编程相关推荐