我正在尝试从python中获取以下命令(在手动输入以关闭mysql服务器时工作)。
我正在运行的代码行是:
os.system('"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u demo -pdemopw shutdown')
任何想法为什么这可以从命令提示符,但不是从os.system,以及我如何解决它?
答案 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)
尝试将\
更改为/
,它应该有效。