python子流程中带有exec的find命令出现错误
我正在尝试使用子流程模块(python)执行以下命令 我猜这与转义某些角色有关。但不知道如何克服这一点 感谢您的帮助。谢谢。记住转义python子流程中带有exec的find命令出现错误,python,find,subprocess,Python,Find,Subprocess,我正在尝试使用子流程模块(python)执行以下命令 我猜这与转义某些角色有关。但不知道如何克服这一点 感谢您的帮助。谢谢。记住转义“是必需的,而且在之前使用的转义\;也是必需的 您的命令可能类似于: p1 = subprocess.Popen(["/usr/bin/find", "<filepath> -maxdepth 1 -type f -iname \"<pattern>\" -exec basename {} \\;"]) p1.communicate() p
“
是必需的,而且在之前使用的转义\
;
也是必需的
您的命令可能类似于:
p1 = subprocess.Popen(["/usr/bin/find", "<filepath> -maxdepth 1 -type f -iname \"<pattern>\" -exec basename {} \\;"])
p1.communicate()
p1=subprocess.Popen([“/usr/bin/find”,“-maxdepth 1-type f-iname\“\”-exec basename{}\\;”)
p1.沟通()
还有一个提示:使用语法r'bla允许使用反斜杠,而不必引用它们:
r'... -exec basename {} \;'
提供更好的可读性。另一个问题的答案有助于: 我不明白的是分号不需要转义,因为通常分号是由bash解释的,需要转义 在bash中,此等效项为:
find /tmp/mount -type f -name "*.rpmsave" -exec rm -f {} \;
如果OP使用单引号(
”
),请提供启动子流程的代码行对于字符串,不需要转义双引号。谢谢。整个命令字符串的单引号起作用。即使您成功了,您能否提供原始代码@shruthi?以及如何修复它?还要注意:这实际上不起作用。它将解释整个第二个参数(从到\\;)作为道路,这不是你所期望的,或想要的。
r'... -exec basename {} \;'
import subprocess
subprocess.Popen(('find', '/tmp/mount', '-type', 'f',
'-name', '*.rpmsave', '-exec', 'rm', '-f', '{}', ';'))
find /tmp/mount -type f -name "*.rpmsave" -exec rm -f {} \;