Python에서 작업중인 파일이 포함 된 폴더의 이름을 가져 오려면 어떤 명령을 사용해야합니까?
"C:\folder1\folder2\filename.xml"
여기 "folder2"
내가 얻고 싶은 것이 있습니다.
내가 생각 해낸 유일한 것은 os.path.split
두 번 사용하는 것입니다 .
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
더 좋은 방법이 있습니까?
답변
다음을 사용할 수 있습니다 dirname
.
os.path.dirname(path)
경로명 경로의 디렉토리 이름을 반환합니다. 이것은 split () 함수에 경로를 전달하여 반환 된 쌍의 첫 번째 요소입니다.
그리고 전체 경로가 주어지면 경로의 마지막 부분을 얻기 위해 정상적으로 분할 할 수 있습니다. 예를 들어 다음을 사용합니다 basename
.
os.path.basename(path)
경로명 경로의 기본 이름을 반환합니다. 이것은 split () 함수에 경로를 전달하여 반환 된 쌍의 두 번째 요소입니다. 이 함수의 결과는 Unix basename 프로그램과 다릅니다. 여기서 ‘/ foo / bar /’의 basename은 ‘bar’를 반환하고 basename () 함수는 빈 문자열 ( ”)을 반환합니다.
모두 함께:
>>> import os
>>> path=os.path.dirname("C:/folder1/folder2/filename.xml")
>>> path
'C:/folder1/folder2'
>>> os.path.basename(path)
'folder2'
답변
dirname 을 사용하려고합니다 . 하나의 디렉토리 만 원하면 os.path.basename 을 사용할 수 있습니다 .
모두 합치면 다음과 같이 보입니다.
os.path.basename(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))
그러면 “other_sub_dir”이 표시됩니다.
다음은 이상적인 접근 방식은 아니지만 원래 os.path.split을 사용하여 제안하고 마지막 항목을 가져옵니다. 다음과 같이 보일 것입니다.
os.path.split(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))[-1]
답변
이것은 꽤 오래되었지만 Python 3.4 이상을 사용하는 경우 PathLib을 사용 하십시오 .
# using OS
import os
path=os.path.dirname("C:/folder1/folder2/filename.xml")
print(path)
print(os.path.basename(path))
# using pathlib
import pathlib
path = pathlib.PurePath("C:/folder1/folder2/filename.xml")
print(path.parent)
print(path.parent.name)
답변
os.path.dirname
당신이 찾고있는 것입니다-
os.path.dirname(r"C:\folder1\folder2\filename.xml")
r
원시 문자열로 간주되도록 문자열 앞에 추가 해야합니다.
데모-
In [46]: os.path.dirname(r"C:\folder1\folder2\filename.xml")
Out[46]: 'C:\\folder1\\folder2'
원하는 경우 위의 예제와 함께 folder2
사용할 수 있습니다.os.path.basename
os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
데모-
In [48]: os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
Out[48]: 'folder2'
답변
전체 경로를 문자열로 얻은 다음 운영 체제의 구분 문자를 사용하여 목록으로 분할 할 수 있습니다. 그런 다음 음수 인덱스를 사용하여 목록 끝에서 요소에 액세스하여 프로그램 이름, 폴더 이름 등을 얻습니다.
이렇게 :
import os
strPath = os.path.realpath(__file__)
print( f"Full Path :{strPath}" )
nmFolders = strPath.split( os.path.sep )
print( "List of Folders:", nmFolders )
print( f"Program Name :{nmFolders[-1]}" )
print( f"Folder Name :{nmFolders[-2]}" )
print( f"Folder Parent:{nmFolders[-3]}" )
위의 출력은 다음과 같습니다.
Full Path :C:\Users\terry\Documents\apps\environments\dev\app_02\app_02.py
List of Folders: ['C:', 'Users', 'terry', 'Documents', 'apps', 'environments', 'dev', 'app_02', 'app_02.py']
Program Name :app_02.py
Folder Name :app_02
Folder Parent:dev
답변
pathlib 를 사용할 수 있습니다 .
from pathlib import Path
Path(r"C:\folder1\folder2\filename.xml").parts[-2]
위의 출력은 다음과 같습니다.
'folder2'