无法使用os.system执行查找

时间:2019-10-01 09:27:21

标签: python-3.x bash shell os.system

我试图通过我的python脚本运行以下命令,以解压缩一堆csv.gz文件

os.system("find /upload/ -name '*.csv.gz' -print -exec gzip -d {} \") <- Syntax error : EOL while scanning string literal.

#When I try to escape it

os.system("find /upload/ -name '*.csv.gz' -print -exec gzip -d {} \\") <- find: missing parameter for « -exec »

如何通过os.system执行find /upload/ -name '*.csv.gz' -print -exec gzip -d {} \

我可以使用os.system("find /upload/ -name '*.csv.gz' -print0 | xargs -0 -n1 gzip -d")之外的其他替代方法吗?

2 个答案:

答案 0 :(得分:1)

在这里,根本不使用外壳实际上是一种简化,只要您了解自己在做什么。您必须添加其他答案中已经提到的缺少的分号。

import subprocess

subprocess.run([
    'find', '/upload/', '-name', '*.csv.gz', '-print',
    '-exec', 'gzip', '-d', '{}', ';'], check=True)

也许还会看到Running Bash commands in Python

答案 1 :(得分:0)

您需要一个(转义的)分号:

os.system("find /upload/ -name '*.csv.gz' -print -exec gzip -d {} \\;")