我想調用一個子進程來備份mysql數據庫。 ,其在終端運行良好(和創建名爲mydatabase.sql文件)的命令行是:Python - subprocess.check_call給出了一個CalledProcessError異常
mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql
現在代碼由蟒跑出調用子流程:
args = shlex.split('mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql')
subprocess.check_call(args)
的exeption提高(沒有文件創建):
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
subprocess.check_call(args)
File "/usr/lib/python3.2/subprocess.py", line 485, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['mysqldump', >'-uroot', '-ppassword', '--add-drop-database', '--database', >'mydatabase', '>', 'mydatabase.sql']' returned non-zero exit status 2
我嘗試了多種不同的方式,但他們仍然不工作:
args = shlex.split('/opt/lampp/bin/mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql')
subprocess.check_call(args)
或
args = shlex.split('/opt/lampp/bin/mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql')
subprocess.Popen(args)
我也試圖與殼= True或或shell =假。在這兩種情況下,他們仍然無法工作。
我已閱讀文檔,谷歌爲我的問題的答案,但我還沒有一個線索如何顯示我的問題。 stackoverflow可能是我最後的希望。
非常感謝!我想給你的答案一個加號,但我需要更多的代表。 –