Q: これら 2 つの違いは何ですか?
- os.sep.join([ディレクトリパス, ファイル名]) を使用します。
for (dirpath, dirnames, filenames) in os.walk(path):
for filename in filenames:
if filename.endswith('.jpg'):
list_of_files[filename] = os.sep.join([dirpath, filename])
- os.path.join(ディレクトリパス, ファイル名)
for (dirpath, dirnames, filenames) in os.walk(path):
for filename in filenames:
if filename.endswith('.jpg'):
list_of_files[filename] = os.path.join(dirpath, filename)
A: os.path.join が推奨されます。
os.sep は単なる文字です。通常の文字列連結の os.sep.join にも同じことが当てはまります。
>>>type(os.sep)
<type 'str'>
>>>print os.sep.join(["foobar", "/foo/baz/", "whatever"])
foobar//foo/baz//whatever
os.path.join は、より多くの知恵を使ってそれらを結合します。複数の区切り文字がある場合は、1 つに減ります。絶対パスのコンポーネント (区切り文字で始まる) がある場合、その前のパスは無視されます。
>>>print os.path.join("foobar", "/foo/baz/", "whatever")
/foo/baz/whatever