我正在尝试向包含空格的注册表添加一个值,因此我想保留双引号。
我尝试用'\''转义双引号,但这没有效果
path_with_spaces = "C:\Users\me\i have space\app.exe"
argument_with_spaces = "Quick brown fox"
data = '"{}" -n "{}"'.format(path_with_spaces, argument_with_spaces)
command = 'REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /f /v test /d "{}"'.format(data)
subprocess.call(command)
如果我打印“命令”我得到:
REG添加HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run / f / v test / d“”C:\ Users \ me \ i有space \ app.exe“-n”Quick brown fox“”
但是在使用regedit检查结果时没有双引号。即使我这样做:
data = '\"{}\" -n \"{}\"'.format(path_with_spaces, argument_with_spaces)
没有变化。使用regedit检查时的输出总是如下所示:
C:\ Users \ me \我有space \ app.exe -n Quick brown fox
我究竟做错了什么?
当您在data
变量中注入command
变量时,它已经是一个字符串。所以,如果你想把\
放在command
上,你必须在data
声明中将它们加倍
我想你可以尝试这样的事情:
data = '\\"{}\\" -n \\"{}\\"'.format(path_with_spaces, argument_with_spaces)