os.path.join() メソッドのオンライン ドキュメントを読んだ後、次のケースは適格であるように思われますが、明らかにそうではありません。そのドキュメントを正しく読んでいますか?
>>> import os
>>>
>>> os.path.join("/home/user", "/projects/pyproject", "mycode.py")
>>> '/projects/pyproject/mycode.py'
1 番目と 2 番目のパスで末尾と先頭の os.sep のさまざまな組み合わせを試した後、結合する 2 番目のパスの最初の文字を os.sep で開始することはできないようです。
>>> os.path.join("/home/user", "projects/pyproject", "mycode.py")
>>> '/home/user/projects/pyproject/mycode.py'
たとえば、path1 と path2 がユーザー入力の一部である場合、ユーザー入力とは、その先頭の os.sep の入力を解析するコードを記述することを意味します。
python.org オンライン リファレンスから:
os.path.join(path1[, path2[, ...]])
1 つ以上のパス コンポーネントをインテリジェントに結合します。いずれかのコンポーネントが絶対パスである場合、以前のすべてのコンポーネント (Windows では、以前のドライブ文字があった場合はそれを含む) が破棄され、結合が続行されます。戻り値は、path1
、およびオプションで などを連結したもので、最後の部分を除く空でない各部分の後にpath2
ディレクトリ セパレータ ( ) が 1 つだけ続きます。os.sep
(これは、最後の部分が空の場合、区切り記号で終わるパスになることを意味します。) Windows では、各ドライブに現在のディレクトリがあるため、 は、 ではなく、ドライブ( )os.path.join("c:", "foo")
上の現在のディレクトリに対する相対パスを表すことに注意してください。C:
c:foo
c:\foo