Windows命令提示符不适用于Python

时间:2014-12-04 11:27:38

标签: python mysql windows command-line

我正在尝试从python中获取以下命令(在手动输入以关闭mysql服务器时工作)。

我正在运行的代码行是:

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

任何想法为什么这可以从命令提示符,但不是从os.system,以及我如何解决它?

2 个答案:

答案 0 :(得分: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 :(得分:1)

尝试将\更改为/,它应该有效。