【问题标题】:Can't execute find with os.system无法使用 os.system 执行查找
【发布时间】:2019-10-01 09:27:21
【问题描述】:

我正在尝试通过我的 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") 的替代品吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    也许也可以看看Running Bash commands in Python

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多