(ons x 10.10.1) 파이썬 스크립트 내에서 쌍 엔드 합병 (캐스퍼)을 사용하려고합니다. os.system (서브 프로세스 또는 pexpect 모듈 사용을 원하지 않음)을 사용하고 있습니다.os.system에서 래핑 된 명령이 무시됩니다.
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)
을 내 스크립트는 세 번째 만이 명령의 2 개 첫 번째 문자열 매개 변수를 해석 시작하지만 일단 기본 접두어로 출력 파일을 일으키는 원인 : 내 스크립트에 여기서 일하지 않는 행은 이름. 필자의 함수는 많은 fastq 파일을 반복하므로 모두 단일 "casper.fastq"파일에 병합됩니다. 무의미한 문자열을 넣고 작동하지 않는 명령의 일부를 엉망으로 만들려고했지만 여전히 오류없이 실행되고 기본 출력은 다음과 같습니다.
os.system("casper %s %s -ldkfnlqdskgfno %s"%(filein[0],filein[1],fileout))
도대체 무슨 일이 일어나는지 이해하는 데 도움을 줄 수 있습니까? 제대로 감싸 명령 (파일 이름이 필요처럼 인용되는) 경우 명령이 전에 그것을 실행
또한 os.sytem 반환 값을 확인하려고 했으므로 0이어야하지만 그래도 출력 문제가 발생합니다. –
어둠에 있습니다 - 파일 이름에 공백이 있습니까? 그렇다면''캐스퍼 "% s" "% s"-o "% s"'가 작동 할 수도 있습니다. 'subprocess.call ([ 'casper', filein [0], filein [1], '-o', fileout])'이 작동합니까? – tdelaney
os.system 대신 인쇄물을 사용해 보셨습니까? 문자열이 제대로 구성되었는지 확인하기 만하면됩니다. –