2016-06-21 1 views
3

Если файл /etc/haproxy/haproxy.cfg, вывод должен быть именем каталога /etc/haproxy.Как получить путь к каталогу, учитывая имя файла в Lua, которое является независимым от платформы

В настоящее время я использую

file = "/etc/haproxy/haproxy.cfg" 
sep = "/" 
file:match("(.*"..sep..")") 

Но это не зависит от платформы и потерпит неудачу на Windows, так как разделитель путь отличается. Итак, есть ли агентистский способ достижения этой цели, используя модуль lfs?

ответ

2

package.config:sub(1,1) дает вам разделитель путей для платформы, на которой работает Lua. См. manual.

+0

Оба разделителя действительны для Windows. Примеры: 'file = io.open'C:/Python27/README.txt'' и' os.execute '"C:/Program Files/Internet Explorer/iexplore.exe"' '. Но 'package.config: sub (1,1)' дает только обратную косую черту. –

2

Я не совсем уверен, что если вы хотите разобрать путь или использовать путь в платформо-независимом способе, но для анализа вы можете использовать [\\/] шаблон вместо /, которые будут соответствовать разным типам разделители:

print(file:match("(.*[\\/])")) 

Если вы хотите, чтобы открыть/получить доступ к файлам, используя эти пути, а затем с помощью / как разделитель пути будет работать с Lua API на Windows.

+0

Обратный слэш не должен быть внутри шаблона для Linux: 'local pattern_for_separator =" [/ ".. package.config: sub (1,1) .."] "' –

Смежные вопросы