【问题标题】:command wrapped in os.system is ignored包裹在 os.system 中的命令被忽略
【发布时间】: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


【解决方案1】:
  1. 在执行之前打印命令以检查您的命令是否正确包装(如需要引用文件名)
  2. 直接执行假设的输出命令,看看它是否被误解。

【讨论】:

  • 我已经通过打印检查了该命令,看起来还可以。我不确定“直接”执行的含义?如果您的意思是“在终端中执行脚本之外的打印命令:我做到了,但发生了一些奇怪的事情:它仍然给了我默认输出。
  • 您的想法很棒,在终端中执行打印的命令表明命令本身存在问题:要么我有输出选项问题,要么应该引用字符串中的文件名。我要解决这个问题,但是THX HUAZHIHAO,我应该考虑一下!如果您有更多线索,请不要犹豫,分享它们
  • 完成!真的很奇怪,在 Casper 工具助手中,写着:“Usage : CASPER forward.fastq reverse.fastq [OPTIONS]”。因此我的命令是:"casper file1 file2 -o output_prefix" 但它不起作用。重新制定命令,从选项开始,而不是文件输入“casper -o output_prefix file1 file2” WORKS
  • 抱歉,我对 casper 及其参数列表一无所知。我只是表达我关于如何处理 bash 执行的通常经验。我必须承认它并没有涵盖每一个案例。有时,您还需要处理环境 - 我的意思是用户、路径、acl 等。希望对您有所帮助。
  • 哈哈,OSX 有时候真的会这样。一些命令在 debian 下执行得非常好,但对于 OSX,它需要更好地格式化/限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
相关资源
最近更新 更多