使用shlex的Python Subprocess chmod上的模式错误无效

时间:2014-11-21 16:40:39

标签: python subprocess

我在python中使用subprocess来更改linux上当前目录中新创建文件的权限。

当我在命令行上运行以下命令时,它按预期工作:

chmod 664 `find /path/path -type f`

我正在尝试使用以下代码在我的python代码中实现它:

perms = "chmod 664 `find /path/path -type f`"
command = shlex.split(perms)
subprocess.call(command)

其中命令如下:

['chmod', '664', '`find', '/path/path', '-type', 'f`']

我在控制台中收到以下错误:

chmod: invalid mode: `-type'

是否与特殊字符有关?

由于

1 个答案:

答案 0 :(得分:2)

特殊字符``必须由shell解释!

您必须使用:

perms = "chmod 664 `find /path/path -type f`"
subprocess.call(perms, shell=True)

或者,您应首先执行find /path/path -type f并使用它输出来构建命令

names = subprocess.check_output("find /path/path -type f")
command = shlex.split('chmod 664 ' + names)
subprocess.call(command)