Форум сайта python.su
0
Мне нужно создать список со списком файлов в каталоге без расширений. Код очень простой, однако не могу понять, почему он мне вместо списка файлов создает списки из отдельных букв.
jpgpath = glob.glob("D:\\test1\\*.jpg") jpgfiles = [] for jpgfile in jpgpath: jpgfiles += jpgfile[:-4] print (jpgfiles)
D:\Proj\Kolya_img\Gmail>999.py ['D', ':', '\\', 't', 'e', 's', 't', '1', '\\', '1', '7', '.', 'j', 'p', 'g', 'D ', ':', '\\', 't', 'e', 's', 't', '1', '\\', 'K', 'A', 'N', 'O', 'P', 'U', 'S', '_', 'P', 'S', 'S', '_', '9', '1', '3', '_', '1', '_', '7', '.', 'j', 'p', 'g']
Офлайн
0
Сделал вот так:
jpgpath = glob.glob("D:\\test1\\*.jpg") jpgfiles = [] for jpgfile in jpgpath: print jpgfile[:4] jpgfiles.append(jpgfile[:3]) print (jpgfiles)
Офлайн
15
import glob import os jpgpath = glob.glob('M:/Users/smoke/Pictures/Wallpapers/*.jpg') jpgfiles = [os.path.basename(i).split('.')[0] for i in jpgpath] print(jpgfiles)
#Ответ: ['303180-1920x1403', '404568-2048x1360', '410376-1942x1080', '432416-1920x1275', '432420-1920x1403', '441396-4714x3628', '455642-1920x1080']
Отредактировано smoke853 (Окт. 24, 2013 14:57:18)
Офлайн
0
jpgfile[:3]
jpgfile[:-4]
Отредактировано nokados (Окт. 24, 2013 14:57:36)
Офлайн
23
smoke853если в имени файла больше одной точки(может такое быть?), то
.split('.')
rsplit('.', 1)
Офлайн
15
vrabey, согласен, такое может быть.
Офлайн
33
Suliman
jpgfiles =
for jpgfile in jpgpath:
jpgfiles += jpgfile
Suliman
не могу понять, почему он мне вместо списка файлов создает списки из отдельных букв.
s = 'What the fuck are you doing?" print(list(s))
['W', 'h', 'a', 't', ' ', 't', 'h', 'e', ' ', 'f', 'u', 'c', 'e', ' ', 'y', 'o', 'u', ' ', 'd', 'o', 'i', 'n', 'g', '?']
>>> l = [] >>> l + '123' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "str") to list >>> l += '123' >>> l ['1', '2', '3']
Отредактировано Budulianin (Окт. 25, 2013 12:30:36)
Офлайн