この場合、なぜ os.path.join() が機能しないのでしょうか? 質問する

この場合、なぜ os.path.join() が機能しないのでしょうか? 質問する

以下のコードは結合されません。デバッグすると、コマンドはパス全体ではなく最後のエントリのみを保存します。

os.path.join('/home/build/test/sandboxes/', todaystr, '/new_sandbox/')

これをテストすると、/new_sandbox/コードの一部のみが保存されます。

ベストアンサー1

後者の文字列はスラッシュで始まってはいけません。スラッシュで始まっている場合、それは「絶対パス」とみなされ、それより前のものはすべて破棄されます。

引用:Pythonドキュメントos.path.join:

コンポーネントが絶対パスの場合、それ以前のすべてのコンポーネントは破棄され、絶対パス コンポーネントから結合が続行されます。

Windows では、ドライブ文字に関する動作が以前の Python バージョンと比べて変更されているようです。

Windows では、絶対パス コンポーネント (例: r'\foo') が検出されてもドライブ文字はリセットされません。コンポーネントにドライブ文字が含まれている場合、それ以前のすべてのコンポーネントは破棄され、ドライブ文字がリセットされます。各ドライブには現在のディレクトリがあるため、は、ドライブ( )os.path.join("c:", "foo")上の現在のディレクトリに対する相対パスを表し、 ではないことに注意してください。C:c:fooc:\foo

おすすめ記事