我试图通过Python代码执行shell命令,但我无法理解它失败的原因。
当打印命令并将其粘贴到shell以尝试执行它时,它可以完美地运行,这是一个奇怪的部分。
从Python我得到以下内容:
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `/DATA/NGS/ngs_software/bioinfoSoftware/bwa_current/bwa mem ... --threads 4 -T /tmp/samTemp -'
我有什么遗失的吗?我的代码看起来像这样,其中' cmd'是命令的字符串。操作系统是带有bash shell的CentOS:
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
out = process.stdout.readline()
out = out.decode("utf-8").strip('\n')
答案 0 :(得分:0)
您的命令包含进程替换,但Popen
使用/bin/sh
运行其命令。但是,当以/bin/sh
运行时,bash
不允许进行替换。您可以使用bash
选项明确请求使用executable
运行该命令。
process = subprocess.Popen(cmd, shell=True, executable='/bin/bash', stdout=subprocess.PIPE)