【发布时间】:2014-09-15 08:42:30
【问题描述】:
我正在尝试将一些命令合并到一个 python 脚本中,我通常会在命令行 (Ubuntu 14.04) 中使用这些命令来处理文件。
我尝试按照subprocess help page 上的示例进行操作,但出现以下错误消息:
find: paths must precede expression: |
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
我有点难过的原因是,如果我直接在控制台中键入它,它会正确执行。我怀疑参数的解析方式有问题,但我认为argv1 和argv2 的打印结果看起来像预期的那样(基于示例)。
import subprocess, shlex
cmd1 = "find . -name *.tgz | xargs -i pigz -dv {}"
cmd2 = "find . -name *.tar | xargs -i tar -xfv {} -C decompressed --wildcards '*B5.TIF' '*B6.TIF' '*B8.TIF' "
args1 = shlex.split(cmd1)
args2 = shlex.split(cmd2)
print args1
print args2
subprocess.call(args1)
subprocess.call(args2)
我尝试了subprocess.call() 和subprocess.Popen(),结果相同。非常感谢任何建议。
【问题讨论】:
标签: python linux shell ubuntu subprocess