如何将目录路径传递给os.execvp

时间:2016-03-30 22:10:41

标签: python exec system-calls rethinkdb execvp

我在从Python执行时试图change directory path of RethinkDB

此Bash命令正在运行:

public class CommunicationQueue<T> 
    where T : struct
{
   private readonly ConcurrentQueue<DataTag<T>> _queue;
//....
}

但是这个系统调用不起作用:

rethinkdb --directory ~/ComeOnRethink

它忽略了参数并使用默认路径执行RethinkDB。我该如何解决这个问题?

*这是有效的:

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

1 个答案:

答案 0 :(得分:1)

试试这个:

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应该是一个可迭代的命令行单词(由shell解析,包括命令名称)。

os.path.expanduser会将路径参数中的~替换为用户主目录(bash为您做的事情)。