Есть ли способ использовать glob в каталоге для получения файлов с определенным расширением, но только с именем самого файла, а не с полным путем?
Python Glob без всего пути - только имя файла
Ответы (8)
Используйте os.path.basename(path)
, чтобы получить имя файла.
person
Tom Zych
schedule
07.09.2011
Это может кому-то помочь:
names = [os.path.basename(x) for x in glob.glob('/your_path')]
person
Anastasios Andronidis
schedule
04.12.2013
Используйте glob в сочетании с os.path.basename
.
person
orlp
schedule
07.09.2011
map(os.path.basename, glob.glob("your/path"))
Возвращает итерацию со всеми именами файлов и расширениями.
person
Víctor Navarro
schedule
15.01.2020
Я продолжаю переписывать решение для относительного глобализации (особенно, когда мне нужно добавить элементы в 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
person
turtlemonvh
schedule
15.08.2019
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
person
rinkush sharda
schedule
16.10.2019
Вы перепутали имена переменных: абсолютный означает полный путь; относительный означает только базовое имя.
- person omatai; 30.04.2020
Если вы ищете файл 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')]
person
rajat prakash
schedule
25.07.2020
for f in glob.glob(gt_path + "/*.png"): # find all png files
exc_name = f.split('/')[-1].split(',')[0]
Тогда exc_name
похож на myphoto.png
person
Nice
schedule
16.07.2021