2016-03-30 7 views
0

私はchange directory path of RethinkDBにPythonから実行中にしようとしています。os.execvpにディレクトリパスを渡す方法

このbashコマンドが動作している:

rethinkdb --directory ~/ComeOnRethink 

しかし、このシステムコールが作動していません。

args = ("--directory ~/ComeOnRethink",) # RethinkDB directory to store data and metadata 
os.execvp("rethinkdb", args) 

それは引数を無視し、デフォルトのパスでRethinkDBを実行しています。この問題を解決するにはどうすればよいですか?

*これは働いている:(コマンド名を含め、シェルによって解析された)コマンドラインの単語の反復可能でなければなりません

import os.path 
args = ["rethinkdb", "--directory", os.path.expanduser("~/ComeOnRethink")] 
os.execvp("rethinkdb", args) # assumes 'rethinkdb' can be found in a directory listed in the PATH environment variable 

args

subprocess.Popen(['rethinkdb', '--directory', './ComeOnRethink']) 

答えて

1

ことは、これを試してみてください。

os.path.expanduserは、ユーザーのホームディレクトリのパス引数にある~(これはbash)を置き換えます。

+0

「ERROR:Unrecognized subcommand〜/ ComeOnRethink」と表示されます。 'rethinkdb help'を試してください。 ' –

+0

right ...私は 'os.execvp'の構文に焦点を当てました。もう一つの問題は、シェルが '〜'を現在のユーザのホームディレクトリに展開することです。これは 'os.execvp'があなたのためにしないものです。 – isedev

+0

答えは '〜'を扱うように更新されました。 – isedev

関連する問題