Командная строка Windows Не работает с Python

Я пытаюсь получить следующую команду (которая работает, когда вводится вручную, чтобы отключить сервер mysql), работающий с python.

Строка кода, которую я запускаю:

os.system('"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u demo -pdemopw shutdown') 

Любые идеи, почему это будет работать из командной строки, но не из os.system, и как я могу это исправить?

При работе с файлами Windows / папками я почти всегда использую необработанные строки. Вот пример:

 sql_admin = r"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" 

Обратите внимание на r в начале строки. Это превращает строку в необработанную строку. Если вы этого не сделаете, Python будет искать обратные косые черты для специальных символов, таких как \n (новая строка), \t (tab) или \b (обратная косая черта). У вас есть последнее в вашей строке.

Один из способов узнать, что происходит, – попробовать напечатать строку в интерпретаторе. Взгляните на следующий пример:

 >>> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" 'C:\\Program Files\\MySQL\\MySQL Server 5.1\x08in\\mysqladmin' >>> r"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqladmin' 

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

 >>> "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqladmin" 

Я всегда находил это немного уродливым и несколько сложнее читать. Вы также можете заменить обратную косую черту косой чертой:

 >>> "C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqladmin" 

Это будет работать, хотя выглядит странно, если вы парень Windows. Поэтому, в конце концов, я по-прежнему рекомендую использовать необработанные строки.

Попробуйте изменить \ на / и он должен работать.