KDB: Как преобразовать относительный путь в абсолютный путь? - PullRequest
0 голосов
/ 13 ноября 2018

Есть ли способ преобразовать относительный путь в абсолютный путь в KDB?

Например:

filePath: `$concat[localPath,"\\",inProcessID,"\\",filename]

Что возвращает:

`..\..\code\products\Q\ShortLocator2\Request Files\1\Locate_CCL_11-13-2018_074736.csv

А теперь я хочу преобразовать это в абсолютный путь.

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Вам нужен канонический путь к файлу? Если вы используете linux, ссылка для чтения обычно доступна и может помочь:

system "readlink -f ", filepath

Но это, очевидно, не помогает для Windows (что, похоже, вы используете?). Я не знаю о подобном инструменте.

0 голосов
/ 13 ноября 2018

В конечном счете, вам следует решить вопрос о том, почему ваша переменная "localPath" является относительной в первую очередь, но вот уродливая функция для решения вашей проблемы:

q){hsym `$("\\" sv neg[c]_"\\" vs system"cd"),"\\","\\" sv (c:count where ".."~/:a)_a:"\\" vs string x}[filePath]
`:C:\Users\code\products\Q\ShortLocator2\Request Files\1\Locate_CCL_11-13-201..

Это специфично для Windows

0 голосов
/ 13 ноября 2018

Вы можете получить текущий рабочий каталог, набрав ...

q)homepath:`$system"pwd" // for Linux ,`/home/user q)homepath:`$system"cd" // for Windows ,`C:\\Users\\user

Чтобы получить абсолютный путь, выполните ...

q).Q.dd[hsym homepath; filepath] `:/home/user/.. Это должновернуть абсолютный путь.

Это отвечает на ваш вопрос?

...