11

使用する方が良いかどうかを把握しようとしています:

os.path.join(str1, str2)

また:

str1 + os.sep + str2

I でプロファイリングするとtimeit、予想どおり、連結の方が高速であることがわかりました。

%timeit 'playground' + os.sep + 'Text'
10000000 loops, best of 3: 139 ns per loop

%timeit os.path.join('playground', 'Text')
1000000 loops, best of 3: 830 ns per loop

だから私の質問は、連結も短いので、使用する理由はありますos.path.join(()か?

ありがとう

4

2 に答える 2

23

それはドキュメントにあります:

os.path.join(path1[, path2[, ...]])

1 つ以上のパス コンポーネントをインテリジェントに結合します。いずれかのコンポーネントが絶対パスである場合、以前のすべてのコンポーネント (Windows では、以前のドライブ文字があった場合はそれを含む) が破棄され、結合が続行されます。戻り値は、path1、およびオプションで などを連結したもので、最後の部分を除く各空でない部分の後にpath2ディレクトリ セパレータ ( ) が 1 つだけ続きます。os.sep(これは、最後の部分が空の場合、区切り記号で終わるパスになることを意味します。) Windows では、各ドライブに現在のディレクトリがあるため、 は、 ではなく、ドライブ( )os.path.join("c:", "foo")上の現在のディレクトリに対する相対パスを表すことに注意してください。C:c:fooc:\foo

os.path.joinさらに多くのことを行います:

>>> os.path.join("/home/", "/home/foo")
'/home/foo'
>>> "/home/" + os.sep + "/home/foo"
'/home///home/foo'

プログラムのボトルネックがどこにあるかという状況は決してないos.path.joinので、それを使用してください。はるかに読みやすくなります。

于 2013-05-28T10:31:03.183 に答える
7

os.path.join複数の引数を取ります:

import os
os.path.join('a', 'b', 'c')

多くのパス部分を連結すると、これはかなり長くなります。

于 2013-05-28T10:31:54.963 に答える