Форум сайта python.su
0
В следующем цикле я ожидаю получить в переменную список файлов в расширением img. Однако
listofimagesinfolder = [] def readrasterfolder(): for root, dirs, files in os.walk(gvar.rasterfolder): # На каждой итерации получаем список элементов одного из каталогов и дсоставляем общий список # И фильтруем по расширению for filename in files: if filename.endswith('.img'): print filename listofimagesinfolder.extend(filename) print "Dir have next images:" print "================================START IMAGES LIST===============================" print listofimagesinfolder print "=================================END IMAGES LIST================================"
================================START IMAGES LIST===============================
['1', '0', '1', '_', '0', '1', '8', '6', '9', '6', '_', '0', '_', '0', '_', '0',
'1', '_', 'b', 's', 'q', '.', 'i', 'm', 'g', '1', '0', '1', '_', '0', '1', '8',
'6', '9', '6', '_', '0', '_', '0', '_', '0', '2', '_', 'b', 's', 'q', '.', 'i',
'm', 'g', '1', '0', '1', '_', '0', '1', '8', '6', '9', '6', '_', '0', '_', '0',
'_', '0', '3', '_', 'b', 's', 'q', '.', 'i', 'm', 'g']
=================================END IMAGES LIST================================
Офлайн
857
замени .extend() на .append()
Офлайн
0
А не могли бы объяснить суть? Почему так происходит?
Офлайн
0
И еще. У меня создается впечатление, что последний участок
print ('LIST OF IMAGES: {0}').format(listofimagesinfolder)#Читаем растры которые есть в каталогеы listofimagesinfolder = [] def readrasterfolder(): for root, dirs, files in os.walk(gvar.rasterfolder): # На каждой итерации получаем список элементов одного из каталогов и дсоставляем общий список # И фильтруем по расширению for filename in files: if filename.endswith('.img'): #print filename listofimagesinfolder.append(filename) print "Dir have next images:" print "================================START IMAGES LIST===============================" for image in listofimagesinfolder: print image print "=================================END IMAGES LIST================================" print gvar.dbhost print ('LIST OF IMAGES: {0}').format(listofimagesinfolder) ################TEMP######################################
Отредактировано Suliman (Апрель 21, 2014 13:49:01)
Офлайн
23
Suliman
А не могли бы объяснить суть? Почему так происходит?
u_ist = [] s = "str" u_ist.extend(s) print u_ist
u_ist.extend(s)
u_ist.extend(list(s))
Офлайн
857
Suliman
Почему так происходит?
>>> print(list.append.__doc__) L.append(object) -> None -- append object to end >>> print(list.extend.__doc__) L.extend(iterable) -> None -- extend list by appending elements from the iterable >>>
Sulimanсначала надо вызвать функцию readrasterfolder()
а вот самый последний вывод показывает, что в переменной пусто.
vrabey
метод extend добавляет новый ! список …
>>> lst = [] >>> lst.extend('abc') >>> lst ['a', 'b', 'c'] >>> lst.extend('def') >>> lst ['a', 'b', 'c', 'd', 'e', 'f'] >>> >>> for i in 'ghi': ... lst.append(i) ... >>> lst ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] >>>
Отредактировано py.user.next (Апрель 21, 2014 13:41:28)
Офлайн
0
Спасибо! Более или менее понял, однако не могу разобраться с областями видимости.
Мне мне нужна переменная, которую я смогу использовать в нескольких функциях. Как ее определить?
listofimagesinfolder = [] def readrasterfolder(): #КУСОК КОДА ВЫКИНУТ listofimagesinfolder.append(filename) print listofimagesinfolder # получается, что тут listofimagesinfolder будет пустым, так?
Офлайн
857
>>> lst = []
>>> def f1():
... lst.append(1)
...
>>> def f2():
... lst.append(2)
...
>>> f1()
>>> f2()
>>> f1()
>>> f2()
>>> lst
[1, 2, 1, 2]
>>>
Отредактировано py.user.next (Апрель 21, 2014 14:06:03)
Офлайн