Python, 디렉토리 문자열에 후행 슬래시 추가, OS 독립적


114

후행 슬래시가없는 경우 디렉토리 문자열에 후행 슬래시 ( /* nix, \win32의 경우)를 추가하려면 어떻게해야합니까? 감사!


8
문자열을 직접 조작하는 대신 os.path모듈 ( docs.python.org/library/os.path.html )을 사용해야합니다 . os.path.join경로 구성 요소를 연결하는 데 사용 합니다.
kennytm

2
문서를 읽은 후, 내 진짜 질문에 대한 답은 os.path.join (folder, filename) 이라고 생각 하고 슬래시에 대해 전혀 걱정할 필요가 없다고 생각하는 Tim에게 감사드립니다 . 사람, 내가 ;-) 사랑 파이썬에 갈거야
ohho

2
이것이 내가 물은 이유입니다. 직접하지 말고 os.path.join표준 라이브러리가 올바른 경로 구분자를 알아 내도록하십시오.
Tim Pietzcker

2
@ S.Lott 나는 이것을 '나쁘다'고 생각하지 않을 것입니다. 질문은 그 자체로 유효한 질문입니다. 이것은 더 큰 (진짜라고 말할 수있는) 질문의 일부일뿐입니다.
ohho 2010-04-29

6
그러나 수행중인 작업에 따라 질문이 여전히 흥미로울 수 있습니다. 예를 들어 Python을 사용하여 다른 프로그램에 입력을 제공하는 경우 인수에 슬래시로 끝나는 경로가 필요한 경우가있을 수 있습니다. 그것은 당신의 통제를 벗어난 것일 수 있습니다. 아래 Marco의 대답에 대해 완벽하게 유효한 사용 사례입니다.
Chris Krycho 2010

답변:


180

os.path.join(path, '') 아직없는 경우 후행 슬래시를 추가합니다.

당신은 할 수있다 os.path.join(path, '', '')또는 os.path.join(path_with_a_trailing_slash, '')당신은 여전히 하나의 후행 슬래시를 얻을 것이다.


2
또한 path디렉토리가 아닌 파일 일 때 슬래시를 추가합니다 . 약간 불편합니다.
Martin

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.