我正在尝试从 python 获取以下命令(手动输入以关闭 mysql 服务器时有效)。
我正在运行的代码行是:
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
(制表符)或 \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 用户,这看起来有点奇怪。所以最后我还是推荐使用原始字符串。
关于python - Windows 命令提示符在 Python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292877/