0

Pythonを使用してSQLiteデータベースを7-zipアーカイブ(Windowsの場合)にダンプしようとしています。私は次のコードを持っています:

import os
import subprocess
DatabaseName = os.path.join('C:\\','Database.sqlite')
ArchiveName = os.path.join('C:\\','temp.7z')
FileName = 'trial.txt'
command = 'sqlite3 %s < C:\\\\SQLite3\\DumpToSTDout.txt | 7z a %s -si%s' % (DatabaseName, ArchiveName, FileName)
print command
DumpProc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
DumpProc.wait()
print DumpProc.stdout.read()
print DumpProc.stderr.read()

C:\ Sqlite3 \ DumpToStdout.txtは、1行目に「.outputstdout」、2行目に「.dump」が含まれるテキストファイルです。

このコードを実行すると、次のエラーが発生します。

sqlite3: Error: too many options: "C:\\SQLite3\DumpToSTDout.txt"
Use -help for a list of options.

しかし、印刷されたコマンドをコマンドウィンドウで直接実行すると、正しく実行されます。

私は何が間違っているのですか?

4

1 に答える 1

2

シェル固有の文字(<および)を使用しているため、呼び出し|でコマンドを実行する必要があります。shell=TruePopen()

于 2012-06-09T20:04:52.650 に答える