web-dev-qa-db-ja.com

どちらを使用する必要があります:os.sepまたはos.path.sep?

それらは同じですが、どちらを使用する必要がありますか?

http://docs.python.org/library/os.html

os.sep

パス名コンポーネントを区切るためにオペレーティングシステムで使用される文字。これは、POSIXの場合は「/」、Windowsの場合は「\」です。これを知っているだけでは、パス名を解析または連結するのに十分ではないことに注意してください— os.path.split()およびos.path.join()を使用します—しかし、それは時々役立つことがあります。 os.pathからも利用できます。

52
zhigang

os.path.sepを使用して、パスセパレーターであることを明確にします。しかし、一貫性がより重要なので、既に使用されている場合はそれを使用します。それ以外の場合は、1つを選択して常に使用します。

編集:車輪を再発明しないように、pathモジュールには既にjoinsplitdirname、およびbasename関数…したがって、path.sepを使用する必要はほとんどありません。

>>> os.path.join("foo", "bar", "baz")
'foo/bar/baz'
>>> os.path.split(_)
('foo/bar', 'baz')
69
David Wolever

OSの区切り文字ではなくパスの区切り文字であるため、わかりやすくするためにos.path.sepを使用することをお勧めします。 import os.path as pathであれば、path.sepと呼ぶことができます。

9
Fred Foo

Jython 2.7を使用している場合、Windows上のJythonには必須のos.sepバックスラッシュではなくos.path.sepスラッシュを返すバグがあるため、"/"(壊れた)の代わりに"\"(動作)を使用することをお勧めします。

9
scottwed