Python、ディレクトリ文字列に末尾のスラッシュを追加、独立してos


114

末尾のスラッシュがまだない場合、ディレクトリ文字列に末尾のスラッシュ(/* nixの場合\はwin32の場合)を追加するにはどうすればよいですか?ありがとう!


8
文字列を直接操作するのではなく、os.pathモジュール(docs.python.org/library/os.path.html)を使用する必要があります。os.path.joinパスコンポーネントを連結するために使用します。
kennytm 2010

2
思い出してくれたTimに感謝します。ドキュメントを読んだ後、私の本当の質問に対する答えはos.path.join(folder、filename)だと思います。スラッシュについて心配する必要はまったくありません。男、私はpythonを愛するつもりです;-)
ohho

2
それが私が尋ねた理由です-これを自分で行わないでくださいos.path.join、標準ライブラリを使用して正しいパスセパレータを見つけさせてください。
Tim Pietzcker、2010

2
@ S.Lottこの「悪い」とは思わない。質問自体は有効な質問です。それは、より大きな(本当のことを言うかもしれない)質問の一部にすぎません。
Ohho

6
しかし、あなたが何をしているのかによっては、問題はまだ興味深いかもしれません。たとえば、Pythonを使用して別のプログラムに入力を提供している場合、引数にスラッシュで終了したパスが必要になる場合があります。それはあなたのコントロールの外にあるかもしれません。以下のマルコの答えの完全に有効なユースケースです。
Chris Krycho

回答:


180

os.path.join(path, '') 末尾にスラッシュがない場合は追加されます。

あなたがすることができますos.path.join(path, '', '')os.path.join(path_with_a_trailing_slash, '')、そしてあなたはまだ1つだけの末尾のスラッシュを取得します。


2
またpath、ディレクトリではなくファイルの場合はスラッシュを追加します。それは少し不便です。
マーティン、

27

ディレクトリとファイル名を接続したいので、

os.path.join(directory, filename)

.\..\..\blah\パスを削除したい場合は、

os.path.join(os.path.normpath(directory), filename)

11

あなたはそれを手動で行うことができます:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

ただし、通常は使用する方がずっとクリーンos.path.joinです。


-1

あなたはこのようなものを使うことができます:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

そうでなければ、このページで何か他のものを探すことができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.