2016-06-21 2 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("(.*[\\/])")) 

、その後、パス区切りとして/を使用すると、Windows上でLuaのAPIで動作します。

+0

Linuxではバックスラッシュはパターンの内側にしてはいけません: 'local pattern_for_separator =" [/ ".. package.config:sub(1,1).."] "' –

関連する問題