2017-05-05 14 views
0

mongoexportコマンドを実行してmongo dbのデータをcsvに取得し、別のcsvと比較して例外/矛盾。私はこれをPython 3.6を使用して実装しようとしていますが、 "mongoexport 'が内部または外部コマンド 操作可能なプログラムまたはバッチファイルとして認識されないというエラーが発生しています。以下はPythonスクリプトでコマンドを実行しようとしたときに 'mongoexport'が動作しない

は私のコードスニペットです:

import os 
import pymongo as mng 
import subprocess 


connected = False 

#Open DB connection 
try: 
    connection = mng.MongoClient('localhost', 27017) 
    db = connection['foo'] 
    print("I am connected to Mongo DB") 
    connected = True 
except: 
    print("I am not able to connect to Mongo DB") 

tgt_count = db.restaurants.count() 
path = subprocess.call("dir",shell=True) 
subprocess.call("mongoexport --db foo --collection restaurants --type=csv --fieldFile D:/my_mongo/fldlist.txt --out D:/my_mongo/outfile.csv", shell=True) 

enter image description here

注:私はPycharm IDEで実行しようとすると、この中に取得しています。

コマンドが実行されている場所を確認できました(path = subprocess.call( "dir"、shell = True))。 dirの場所を確認した後、私は手動でWindowsのコマンドプロンプトで同じmongoexportコマンドを実行したところ正常に動作したので、正しく更新されていない環境変数は問題ではありません。また、コール関数もうまくいくようです - 私が間違っている/紛失していることを指すポインタは大きな助けになるでしょう... Please

+0

引数をリストで渡していますか? –

答えて

1

dirを一重引用符で囲みます。また、リスト形式で引数を使用している場合は、shell=trueを削除してください。文字列形式の場合は、追加することができます。shell=true

import os 
import pymongo as mng 
import subprocess 


connected = False 

#Open DB connection 
try: 
    connection = mng.MongoClient('localhost', 27017) 
    db = connection['foo'] 
    print("I am connected to Mongo DB") 
    connected = True 
except: 
    print("I am not able to connect to Mongo DB") 

tgt_count = db.restaurants.count() 
path = subprocess.call('dir',shell=True) 
subprocess.call("mongoexport --db foo --collection restaurants --type=csv --fieldFile D:/my_mongo/fldlist.txt --out D:/my_mongo/outfile.csv") 
+0

私のdirコマンドが正常に動作しています - 私の問題は、mongoexportが動作しないことです。私は一重引用符を実行しようとしました - 幸運なし –

+0

とsubprocess.callでフルパスを実行する場合は? –

+0

私はこれを最終的に考え出しました...私のIDEは自分の環境変数の更新を受け取りませんでした。 IDEを再起動したところ、うまくいきました。 @ Gerhard-Barnardにこれを調べてくれてありがとう - あなたの時間を感謝します。 –

関連する問題