无法使用 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")之外,还有其他选择吗?

根本不使用 shell 实际上是一种简化,只要你明白你在做什么。 您必须添加缺少的分号,如其他答案中已经提到的那样。

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

也许还可以在 Python 中运行 Bash 命令

你需要一个(转义的(分号:

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

最新更新