2014-12-04 3 views
2

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

Строка кода Я бегу это:

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

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

+0

это было. большое спасибо. Я думал об этом, но затем подумал, что b/c он работал в фактическом командной строке, что он не ускользнул. В любом случае, большое спасибо, вы только что закончили 2-часовой поход через пропасть для меня. –

+2

Используйте необработанные строки. Прикрепите 'r' перед своей командной строкой, это займет' \ b' и использовать его буквально. –

ответ

2

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

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

Обратите внимание на r в начале строки. Это превращает строку в необработанную строку. Если вы этого не сделаете, Python будет смотреть на обратную косую черту для специальных символов, например \n (новая строка), \t (вкладка) или \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. Поэтому, в конце концов, я по-прежнему рекомендую использовать необработанные строки.

1

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