gpt4 book ai didi

python - python 上 os.system 中的大括号

转载 作者:行者123 更新时间:2023-12-05 08:37:00 34 4
gpt4 key购买 nike

在 linux 终端中,我可以删除目录中的所有文件,包括隐藏文件:

sudo rm -rf /path/to/folder/{*,.*} 2> /dev/null

我正在尝试通过 python 中的 os.system 运行以下命令:

>>> os.system('sudo rm -rf /path/to/folder/{*,.*}')

这将无任何错误地退出(退出代码 0),但不要删除任何内容。

我在这里理解大括号可能有特殊含义,但尝试 \{*,.*\} 不会有任何改变。

想知道这里发生了什么以及如何告诉 python 在终端中使用大括号。

当然要完成我能做的工作:

os.system('sudo rm -r /path/to/folder/* /path/to/folder/.myHiddenFile')  # or other combination

但我想在这里了解如何使用花括号。

最佳答案

os.system调用C标准库函数system ,它使用 /bin/sh -c 执行命令。

由于您使用的花括号扩展是 bash 的一个特性,os.system 使用的底层 shell 根本无法理解。

要解决此问题,您可以通过使用 -c 参数调用 /bin/bash(或您的 bash 所在的任何位置)在 bash 中显式执行命令。例如

os.system("/bin/bash -c 'sudo rm -rf /path/to/folder/{*,.*}'")

注意:使用单引号,因为 sudo 需要。

关于python - python 上 os.system 中的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67005793/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com