Найти - Пользователи
Полная версия: Создать список файлов
Начало » Python для новичков » Создать список файлов
1
Suliman
Мне нужно создать список со списком файлов в каталоге без расширений. Код очень простой, однако не могу понять, почему он мне вместо списка файлов создает списки из отдельных букв.

	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']
Suliman
Сделал вот так:
	jpgpath = glob.glob("D:\\test1\\*.jpg")
	jpgfiles = []
	for jpgfile in jpgpath:
		print jpgfile[:4]
		jpgfiles.append(jpgfile[:3])
	print (jpgfiles)
Однако вместо расширения откусывается почти весь путь. Вместо
D:\test1\KANOPUS_PSS_913_1_7.jpg
получаю:
D:\t
smoke853
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']
nokados
jpgfile[:3]
откусываешь до 3 символа в конце
надо
 jpgfile[:-4]
получается
vrabey
smoke853
.split('.')
если в имени файла больше одной точки(может такое быть?), то
rsplit('.', 1)
smoke853
vrabey, согласен, такое может быть.
Budulianin
Suliman
jpgfiles =
for jpgfile in jpgpath:
jpgfiles += jpgfile
Suliman
не могу понять, почему он мне вместо списка файлов создает списки из отдельных букв.


Ты объединяешь строку со списком, Python тебе помогает это сделать и преобразовывает строку в список

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', '?']


Странно, я думал, что таких неявных преобразований, как в PHP в Python нет

>>> 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']
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB