Сохранить двойные кавычки на значение реестра - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь добавить значение в реестр, который содержит пробелы, и по этой причине я хочу сохранить двойные кавычки.

Я пытался экранировать двойные кавычки с помощью '\ "', но этого не былоэффект

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 ADD HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run / f / v test / d ""C: \ Users \ me \ У меня есть пробел \ app.exe "-n" Быстрая коричневая лиса ""

, но при проверке результата с помощью regedit нет двойных кавычек. Даже еслия делаю это:

data = '\"{}\" -n \"{}\"'.format(path_with_spaces, argument_with_spaces)

Без изменений. Вывод при проверке с помощью regedit всегда такой:

C: \ Users \ me \ у меня есть пробел \ app.exe -n Быстрая коричневая лиса

Что я делаю не так?

1 Ответ

1 голос
/ 26 марта 2019

Когда вы вводите переменную data в переменную command, это уже строка.Поэтому, если вы захотите оставить \ в command, вы должны удвоить их в data декларации

Я думаю, вы можете попробовать что-то вроде этого:

data = '\\"{}\\" -n \\"{}\\"'.format(path_with_spaces, argument_with_spaces)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...