我试图从python工作得到以下命令(这是手动input来closuresmysql服务器)。
我正在运行的代码行是:
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的家伙,看起来有些奇怪。 所以最后,我仍然建议使用原始字符串。
尝试改变\
到/
它应该工作。