如何在Python子进程模块中分离要使用的unix命令的各个部分?

2024-04-20 08:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python脚本中添加一个Linux命令(使用subprocess模块)。这是我要添加的命令:

awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' < input.fa

现在我的代码是这样的:

out = subprocess.Popen(["awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' < input.fa"], 
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT)

stdout, stderr = out.communicate()
print(stdout)
print(stderr)

然而,我的语法似乎有点错误。在我看到的其他一些示例中,似乎需要使用撇号将命令拆分为多个部分—但是,此命令相当复杂,我不知道在何处需要拆分。你知道吗

我将感谢任何帮助,以确定根本的问题和纠正这个脚本的语法。你知道吗


Tags: 命令脚本inputlinuxstderrstdout语法out
1条回答
网友
1楼 · 发布于 2024-04-20 08:39:22

我已经设法通过使用一个执行相同操作但不包含任何“\n”的命令来规避我的问题,这似乎是导致我的问题的原因。此外,使用不同的引号(即“and”)有助于防止这一问题的发生。代码现在看起来像这样,并执行我需要它执行的操作:

print(subprocess.Popen('perl -ne "chomp;print;" chr11', shell=True, stdout=subprocess.PIPE).stdout.read())

相关问题 更多 >