我嘗試使用子模塊來執行以下命令(蟒蛇)find命令給出錯誤
/usr/bin/find <filepath> -maxdepth 1 -type f -iname "<pattern>" -exec basename {} \;
但是,它提供了以下錯誤:
/usr/bin/find: missing argument to `-exec'
我我猜這是爲了逃避某些角色。但沒有得到如何克服這一點。
任何幫助表示讚賞。謝謝。
我嘗試使用子模塊來執行以下命令(蟒蛇)find命令給出錯誤
/usr/bin/find <filepath> -maxdepth 1 -type f -iname "<pattern>" -exec basename {} \;
但是,它提供了以下錯誤:
/usr/bin/find: missing argument to `-exec'
我我猜這是爲了逃避某些角色。但沒有得到如何克服這一點。
任何幫助表示讚賞。謝謝。
記得逃逸"
是必需的,也逃脫\
還需要
;
之前使用
您的命令可能看起來像:
p1 = subprocess.Popen(["/usr/bin/find", "<filepath> -maxdepth 1 -type f -iname \"<pattern>\" -exec basename {} \\;"])
p1.communicate()
還有一個提示:使用語法r'bla」允許使用不必引用它們的反斜槓:
r'... -exec basename {} \;'
提供更好的可讀性。
上的另一個問題的回答幫助: https://stackoverflow.com/a/15035344/971529
import subprocess
subprocess.Popen(('find', '/tmp/mount', '-type', 'f',
'-name', '*.rpmsave', '-exec', 'rm', '-f', '{}', ';'))
我無法弄清楚的事情是,分號並不需要進行轉義,因爲通常分號解釋由bash,並需要逃脫。
在bash這equivelent是:
find /tmp/mount -type f -name "*.rpmsave" -exec rm -f {} \;
這適用於我。重點是 ';'選項。 – 2015-10-13 07:36:36
請提供的代碼,你如果OP是用單引號(''')的字符串啓動子 – wim 2012-03-21 06:28:01