サブプロセスを呼び出してmysqlデータベースをバックアップしたいと思います。ターミナルで正常に実行された(そしてmydatabase.sqlという名前のファイルを作成した)コマンドラインは次のとおりです。
mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql
これで、サブプロセスを呼び出すためにPythonによって実行されるコードは次のようになります。
args = shlex.split('mysqldump -uroot -ppassword --add-drop-database --database mydatabase > mydatabase.sql')
subprocess.check_call(args)
例外が発生します(ファイルは作成されません):
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)
また、shell=Trueまたはまたはshell=Falseで試しました。どちらの場合も、まだ機能しません。
私は私の問題の答えのためにグーグルのドキュメントを読みました、しかし私は私の問題を示す方法の手がかりを持っていません。stackoverflowはおそらく私の最後の希望です。