2016-03-30 7 views
0

Ich versuche change directory path of RethinkDB während der Ausführung von Python.Wie übergebe ich einen Verzeichnispfad an os.execvp

Dieser Bash-Befehl funktioniert:

rethinkdb --directory ~/ComeOnRethink 

Aber dieses System Aufruf funktioniert nicht:

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

Es ist das Argument zu ignorieren und RethinkDB mit Standardpfad ausgeführt wird. Wie kann ich dieses Problem beheben?

* Das funktioniert:

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

Antwort

1

Try this:

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 ein iterable der Befehlszeile Wörter sein sollte (wie von der Shell analysiert, einschließlich der Befehlsname).

os.path.expanduser wird die ~ im Pfadargument zum Home-Verzeichnis des Benutzers ersetzen (was etwas für Sie ist bash).

+0

Es heißt 'FEHLER: Unbekannter Unterbefehl '~/ComeOnRethink'. Versuchen Sie 'rethinkdb help'.' –

+0

Richtig ... Ich konzentrierte mich auf die Syntax von 'os.execpp'. Das andere Problem, das Sie haben, ist, dass die Shell '~' zum Home-Verzeichnis des aktuellen Benutzers erweitert; Das ist etwas, das 'os.execvp' nicht für Sie tun kann. – isedev

+0

Antwort aktualisiert, um mit '~' umzugehen. – isedev

Verwandte Themen