【发布时间】:2015-01-26 15:44:34
【问题描述】:
(在 os x 10.10.1 上)我正在尝试在 python 脚本中使用双端合并(Casper)。我正在使用 os.system (不想使用 subprocess 或 pexpect 模块)。在我的脚本中,这行不起作用:
os.system("casper %s %s -o %s"%(filein[0],filein[1],fileout))
#filein[0]: input file 1
#filein[1]: input file 2
#fileout: output prefix (default==casper)
一旦我的脚本启动,只有该命令的前两个字符串参数会被解释,而第三个参数不会被解释,从而产生一个带有默认前缀名称的输出文件。由于我的函数正在遍历许多 fastq 文件,因此它们都合并在一个“casper.fastq”文件中。 我试图弄乱命令中不起作用的部分(就在-o之后),放入无意义的字符串,但它仍然执行没有错误和默认输出,这里是“搞砸的行”:
os.system("casper %s %s -ldkfnlqdskgfno %s"%(filein[0],filein[1],fileout))
谁能帮忙理解到底是怎么回事?
【问题讨论】:
-
我也尝试检查 os.sytem 返回值,它是 0,所以应该没问题,但仍然出现此输出问题
-
在黑暗中拍摄 - 您的文件名中有空格吗?如果是这样,
'casper "%s" "%s" -o "%s"可能会起作用。subprocess.call(['casper', filein[0], filein[1], '-o', fileout])有效吗? -
你试过用 print 代替 os.system 吗?只是为了检查字符串的构造是否正确
-
我很困惑!我尝试打印命令,字符串没有错。
-
此外,我已经在我的命令上尝试了“subprocess.call”,但它返回了一个我没有得到的错误:“Traceback(最近一次调用最后一次):文件“stage_ruffus.py”,行329,在
pipeline_run(multiprocess=4) 文件“/Library/Python/2.7/site-packages/ruffus/task.py”中,第 3767 行,在 pipeline_run 中引发 job_errors ruffus.ruffus_exceptions.RethrownJobError:原始异常:异常 # 'exceptions.OSError([Errno 2] 没有这样的文件或目录)'在...中提出任务 = def merge_read(...):作业 = [[393W_S1_L001_R1_001.fastq,393W_S1_L001_R2_001.fastq] -> 393W_S1_L001_MERGED_READS_001.fastq]”
标签: python macos merge limits os.system