1. ホーム
  2. python

[解決済み] この場合、なぜ os.path.join() は動作しないのでしょうか?

2022-03-14 17:06:44

質問

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

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

これをテストすると /new_sandbox/ という部分があります。

どのように解決するのですか?

後者の文字列は、スラッシュで始まってはいけません。もしスラッシュで始まっていたら、quot;絶対パスとみなされ、それ以前のものはすべて破棄されます。

引用元 のPythonドキュメントを参照してください。 os.path.join :

<ブロッククオート

コンポーネントが絶対パスの場合、それまでのコンポーネントはすべて捨てられ、絶対パスのコンポーネントから結合が続けられる。

Windowsでは、ドライブレターに関する挙動が、以前のPythonのバージョンと比較して変更されているようですので、注意してください。

Windows では、絶対パス コンポーネント(例. r'\foo' ) に遭遇した場合。コンポーネントがドライブレターを含む場合、それ以前のコンポーネントはすべて破棄され、ドライブレターがリセットされます。各ドライブにはカレント・ディレクトリが存在するため、以下の点に注意してください。 os.path.join("c:", "foo") のカレントディレクトリへの相対パスを表します。 C: ( c:foo ) ではなく c:\foo .