전체 경로가없는 Python Glob-파일 이름 만


82

디렉토리에서 glob을 사용하여 특정 확장자를 가진 파일을 가져올 수 있지만 전체 경로가 아닌 파일 이름 자체 만 가져올 수있는 방법이 있습니까?

python  glob 

답변:


128

os.path.basename(path)파일 이름을 가져 오는 데 사용 합니다.



12

와 함께 glob을 사용합니다 os.path.basename.


2
map(os.path.basename, glob.glob("your/path"))

모든 파일 이름과 확장자가있는 이터 러블을 반환합니다.


1

os.path.basename이 나를 위해 작동합니다.

다음은 코드 예입니다.

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

변수 이름을 혼합했습니다. 절대는 전체 경로를 의미합니다. 상대는 기본 이름 만 의미합니다.
omatai

0

나는 상대 globbing (특히 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

0

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