我正在尝试向注册表中添加一个包含空格的值,因此我想保留双引号。
我尝试用'\''转义双引号,但这没有效果
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有空间\ app.exe“ -n” Quick brown fox“ “
,但是使用regedit检查结果时没有双引号。即使我这样做:
data = '\"{}\" -n \"{}\"'.format(path_with_spaces, argument_with_spaces)
没有变化。使用regedit检查时的输出始终是这样的:
C:\ Users \ me \ i我有空格\ app.exe -n棕色狐狸
我在做什么错了?
答案 0 :(得分:1)
将data
变量注入command
变量中时,它已经是字符串。因此,如果您想将\
保留在command
中,则必须在data
声明中将它们加倍
我认为您可以尝试这样的事情:
data = '\\"{}\\" -n \\"{}\\"'.format(path_with_spaces, argument_with_spaces)