2012-06-09 4 views
0

파이썬을 사용하여 SQLite 데이터베이스를 7-zip 아카이브 (Windows에서)로 덤프하려고합니다. 나는 다음과 같은 코드가 있습니다 :파이썬 하위 프로세스를 사용하여 SQLite에서 7-zip으로 파이프 출력

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가 두 번째 행의 첫 번째 라인과 '.dump'에 '· 출력 표준 출력'텍스트 파일입니다.

나는 다음과 같은 오류가이 코드를 실행하면 :

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

을하지만 인쇄 명령을하고 명령 창에서 직접 실행하면 제대로 실행됩니다.

내가 뭘 잘못하고 있니?

+1

교착 상태를 피하기 위해'DumpProc.communicate()'을 사용하십시오. – jfs

+0

감사합니다. – MatlabSorter

답변

2

셸 특정 문자 (<|)를 사용하고 있으므로 Popen() 호출에서 shell=True과 함께 명령을 실행해야합니다.

+0

영광스러운 - 감사합니다! – MatlabSorter

관련 문제