使用python子进程将SQLite的输出管道传输到7-zip

时间:2012-06-09 20:03:01

标签: python sqlite subprocess

我正在尝试使用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是一个文本文件,第一行有'.output stdout',第二行有'.dump'。

当我运行此代码时,我收到以下错误:

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

但是如果我接受打印的命令并直接在命令窗口中运行它,它就会正确运行。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

由于您使用的是特定于shell的字符(<|),因此您需要在shell=True调用中使用Popen()运行该命令。