Python의 파일 경로에서 폴더 경로를 어떻게 추출 할 수 있습니까?


116

전체 경로에서 파일로의 폴더 경로 만 얻고 싶습니다.

예를 들어 T:\Data\DBDesign\DBDesign_93_v141b.mdb, 나는 T:\Data\DBDesign(제외 \DBDesign_93_v141b.mdb) 를 얻고 싶습니다 .

나는 다음과 같은 것을 시도했다.

existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = str(existGDBPath.split('\\')[0:-1])
print wkspFldr 

하지만 다음과 같은 결과를 얻었습니다.

['T:', 'Data', 'DBDesign']

그것은 내가 요구하는 결과가 아닙니다 T:\Data\DBDesign.

내 파일의 경로를 얻는 방법에 대한 아이디어가 있습니까?

답변:


140

split함수 사용은 거의 완료되었습니다 . 다음과 같이 문자열을 연결하면됩니다.

>>> import os
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'

os.path.dirname이 작업을 수행 하는 데 함수를 사용하는 것이 좋지만 문자열을 전달하면 작업을 수행 할 수 있습니다. 당신이 창문에있는 것 같기 때문에, abspath함수를 사용하는 것을 고려하십시오 . 예 :

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'

분할 후 파일 이름과 디렉토리 경로를 모두 원할 경우 os.path.split다음과 같이 튜플을 반환하는 함수를 사용할 수 있습니다 .

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')

os.sep.join(existGDBPath.split(os.sep)[:-1]더 예뻐 보인다.
Dave Babbitt

88

PATHLIB 모듈 포함 (업데이트 된 답변)

새로운 개발을 위해 pathlib 사용을 고려해야 합니다. Python3.4 용 stdlib에 있지만 이전 버전의 경우 PyPI 에서 사용할 수 있습니다. 이 라이브러리는 경로를 조작 할 수있는 더 객체 orented 방법을 제공 <opinion>하고 훨씬 쉽게 읽기 및 프로그램입니다 </opinion>.

>>> import pathlib
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb')
>>> wkspFldr = existGDBPath.parent
>>> print wkspFldr
Path('T:\Data\DBDesign')

OS 모듈 포함

os.path 모듈을 사용하십시오 :

>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr 
'T:\Data\DBDesign'

계속 진행하여 일종의 파일 이름 조작을 수행해야하는 경우 이미 os.path. 그렇지 않은 경우에도이 모듈을 빌딩 블록으로 사용해야합니다.


Path().parent내가 찾던 것!
iedmrc

44

내장 서브 모듈 os.path 에는 바로 그 작업을위한 기능이 있습니다.

import os
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb')

4

다음은 코드입니다.

import os
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = os.path.dirname(existGDBPath)
print wkspFldr # T:\Data\DBDesign

0

다음은 경로 int 파일, 경로 토큰 분할을위한 작은 유틸리티 도우미입니다.

import os    
# usage: file, path = splitPath(s)
def splitPath(s):
    f = os.path.basename(s)
    p = s[:-(len(f))-1]
    return f, p

0

ESRI GIS 테이블 필드 계산기 인터페이스에서이 작업을 수행하려는 사람은 누구나 Python 파서 로이 작업을 수행 할 수 있습니다 .

PathToContainingFolder =

"\\".join(!FullFilePathWithFileName!.split("\\")[0:-1])

그래서

\ Users \ me \ Desktop \ 새 폴더 \ file.txt

된다

\ Users \ me \ Desktop \ New 폴더

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.