전체 경로가 없는 Python Glob - 파일 이름만 있음
디렉터리에서 글로벌을 사용하여 특정 확장자를 가진 파일을 가져올 수 있지만 전체 경로가 아닌 파일 이름 자체만 가져올 수 있는 방법이 있습니까?
파일 이름을 가져오는 데 사용합니다.
이것은 누군가에게 도움이 될 수 있습니다.
names = [os.path.basename(x) for x in glob.glob('/your_path')]
map(os.path.basename, glob.glob("your/path"))
모든 파일 이름과 확장명을 가진 반복 가능한 파일을 반환합니다.
os.path.basname은 저에게 적합합니다.
다음은 코드 예제입니다.
import sys,glob
import os
expectedDir = sys.argv[1] ## User input for directory where files to search
for fileName_relative in glob.glob(expectedDir+"**/*.txt",recursive=True): ## first get full file name with directores using for loop
print("Full file name with directories: ", fileName_relative)
fileName_absolute = os.path.basename(fileName_relative) ## Now get the file name with os.path.basename
print("Only file name: ", fileName_absolute)
출력:
Full file name with directories: C:\Users\erinksh\PycharmProjects\EMM_Test2\venv\Lib\site-packages\wheel-0.33.6.dist-info\top_level.txt
Only file name: top_level.txt
저는 상대적인 글로빙(예: zip 파일에 항목을 추가해야 할 때)을 위해 솔루션을 계속 다시 작성합니다. 이것이 일반적인 방식입니다.
# Function
def rel_glob(pattern, rel):
"""glob.glob but with relative path
"""
for v in glob.glob(os.path.join(rel, pattern)):
yield v[len(rel):].lstrip("/")
# Use
# For example, when you have files like: 'dir1/dir2/*.py'
for p in rel_glob("dir2/*.py", "dir1"):
# do work
pass
CSV 파일을 찾는 경우:
file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.csv')]
EXCEL 파일을 찾고 있는 경우:
file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.xlsx')]
기존 답변 중 제가 검색하던 새 모듈 사용에 대해 언급한 내용이 없으므로 여기에 새 답변을 추가하겠습니다.
Path.glob
생산물Path
디렉터리를 포함한 전체 경로를 포함하는 개체입니다.파일 이름만 필요한 경우 속성을 사용합니다.
만약 당신이 자주 전환하는 것을 발견한다면.pathlib
그리고, 두 라이브러리 사이의 기능을 변환하는 이 편리한 테이블을 확인하십시오.
for f in glob.glob(gt_path + "/*.png"): # find all png files
exc_name = f.split('/')[-1].split(',')[0]
그러면 그.exc_name
는 것과 같은myphoto.png
또는 pathlib 사용:
from pathlib import Path
dir_URL = Path("your_directory_URL") # e.g. Path("/tmp")
filename_list = [file.name for file in dir_URL.glob("your_pattern")]
glob.glob("*.filetype")을 사용하여 전체 경로를 가진 모든 파일의 목록을 가져오고 os.path.basename(list_item)을 사용하여 추가 경로를 제거하고 파일 이름만 유지합니다.
다음은 예입니다.
import glob
a=glob.glob("*.pkl")
각 파일의 전체 경로가 .pkl로 끝나는 목록을 반환합니다.
이제 다음을 사용하여 경로 정보를 제거하고 목록 항목의 파일 이름만 추출할 수 있습니다.
import os
b=os.path.basename(a[0])
# This is an example to extract filename for only one list item
파일 이름만으로 전체 목록을 만들어야 하는 경우:
bb=[os.path.basename(list_item) for list_item in a]
언급URL : https://stackoverflow.com/questions/7336096/python-glob-without-the-whole-path-only-the-filename
'source' 카테고리의 다른 글
문제 ORA-00001: INSERT/UPDATE에서 고유 제약 조건을 위반했습니다. (0) | 2023.08.07 |
---|---|
디스플레이의 반대가 있습니까: 없음? (0) | 2023.08.07 |
PHP 및 AJAX 보안 질문 (0) | 2023.08.07 |
PDB 명령과 이름이 충돌하는 변수를 조작하려면 어떻게 해야 합니까? (0) | 2023.08.07 |
Angular2 라우터(@angular/router), 기본 경로를 설정하는 방법은 무엇입니까? (0) | 2023.08.02 |