2014-11-21 94 views
1

我正在使用python中的子進程來更改我在linux上當前目錄中新建文件的權限。Python子進程無效的模式錯誤使用shlex的chmod

當我運行在命令行下,它按預期工作:

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

我想通過以下來實現這在我的Python代碼:

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

其中command是如下:

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

我在我的控制檯中得到以下錯誤:

chmod: invalid mode: `-type' 

這是否與特殊字符有關?

感謝

回答

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)