私は2つの文字列を持っています:
C:\Data
および別のフォルダ
Foo1
必要なのは、Windowsの出力が
C:\Data\Foo1
Linuxの出力は
/data/foo1
/dataがLinuxにあると仮定します。Pythonで使用できる定数セパレーターはありますか?これにより、基盤となるOSに関係なく簡単に使用できますか?
私は2つの文字列を持っています:
C:\Data
および別のフォルダ
Foo1
必要なのは、Windowsの出力が
C:\Data\Foo1
Linuxの出力は
/data/foo1
/dataがLinuxにあると仮定します。Pythonで使用できる定数セパレーターはありますか?これにより、基盤となるOSに関係なく簡単に使用できますか?
はい、Pythonos.sep
はその文字であるを提供しますが、あなたの目的のために、関数os.path.join()
はあなたが探しているものです。
>>> os.path.join("data", "foo1")
"data/foo1"
os.path.normpath()は、LinuxおよびWindowsのパスを正しく正規化します。参考までに、Windows OSの呼び出しではどちらのスラッシュも使用できますが、正規化してユーザーに表示する必要があります。
os.path.join()
常に優れています。Mark Tolonenが書いたように(彼への私の+1)、Windowsでも通常のスラッシュを使用できます。パスを明示的に記述する必要がある場合は、この方法をお勧めします。Pythonのパスにバックスラッシュを使用することは絶対に避けてください。または、文字列でそれらを2倍にするかr'raw strings'
、バックスラッシュの解釈を抑制するために使用する必要があります。それ以外の場合は、'c:\for\a_path\like\this'
実際には\f
、、、、\a
および\t
エスケープシーケンスが含まれていますが、これらは執筆時点では気付かない可能性があります...将来的には頭痛の種になる可能性があります。