Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2014 13:38:03

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите записать цикл

Хочу написата что-то вроде:

	for root, dirs, files in os.walk(rasterfolder):
		print root
		print join(root, file) for file in files
не могу разобраться со строкой
print join(root, file) for file in files
как цикл for записать, чтобы он file подставлял куда надо?

Офлайн

#2 Апрель 14, 2014 13:58:15

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Помогите записать цикл

Suliman
может так?

for root, dirs, files in os.walk(rasterfolder):
	for file in files:
	    print os.path.join(root, file)

Офлайн

#3 Апрель 14, 2014 14:25:10

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите записать цикл

Да спасибо, а как создать список и поместить все прочитанный файлы в список?
listofimages.append(file) ?
переменную listofimages где объвлять?
=========================
Пока придумал так:

	for root, dirs, files in os.walk(rasterfolder):
		for file in files:
			listofimages = [file]
			for image in listofimages:
				print image	
Это нормальный вариант?

Отредактировано Suliman (Апрель 14, 2014 14:30:06)

Офлайн

#4 Апрель 14, 2014 14:44:51

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Помогите записать цикл

for root, dirs, files in os.walk(rasterfolder):
    pass
    
print files

files - это и есть список файлов
или полные пути добавить в список?
или полные уже изменённые пути добавить в список?
или …
задача не очень ясна

Отредактировано vrabey (Апрель 14, 2014 14:58:05)

Офлайн

#5 Апрель 14, 2014 15:06:48

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите записать цикл

Ситуация такая: в текущем кода при проходе по каждой директории создается и выводится новый список:

['101_018696_0_0_01_bsq.img', '101_018696_0_0_02_bsq.img', '101_018696_0_0_03_bsq.img']
['234321786.txt', '468312234.txt']
[] <-- пустая директория
[] <-- пустая директория

Однако мне нужно получить список файлов их всех директорий. Суммарно. Общий массив файлов из всех директорий. Как релизовать?

Отредактировано Suliman (Апрель 14, 2014 15:07:09)

Офлайн

#6 Апрель 14, 2014 16:23:46

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Помогите записать цикл

Suliman
Однако мне нужно получить список файлов их всех директорий
list_path = []
for root, dirs, files in os.walk(rasterfolder):
    for file in files:
        full_path = os.path.join(root, file)
        list_path.append(full_path)
print list_path

Марк Лутц - Программирование на Python, 4-е издание, I том, 2011 - тут есть глава про работу с файлами и каталогами

Отредактировано vrabey (Апрель 14, 2014 16:28:19)

Офлайн

#7 Апрель 14, 2014 16:48:13

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Помогите записать цикл

import os
from functools import partial
list_path = []
for root, _, files in os.walk(rasterfolder):
    full_path = partial(os.path.join, root)
    list_path.extend(map(full_path, files))

Офлайн

#8 Апрель 14, 2014 19:54:02

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Помогите записать цикл

s0rg
for root, _, files in os.walk(rasterfolder):
а можно объяснить зачем использовать underscore и при каких обстоятельствах его вообще можно использовать
или где почитать?

уже почитал
…просто имя переменной которая фактически не используется

Отредактировано vrabey (Апрель 14, 2014 20:39:45)

Офлайн

#9 Апрель 14, 2014 20:47:12

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Помогите записать цикл

vrabey
а можно объяснить зачем использовать underscore и при каких обстоятельствах его вообще можно использовать
или где почитать?

уже почитал
…просто имя переменной которая фактически не используется

В большинстве случаев лучше пользоваться срезами. Например для данного случая:
for root, files in os.walk(raster folder)[::2]:
     ...

Офлайн

#10 Апрель 14, 2014 21:08:01

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Помогите записать цикл

Alen
Например для данного случая
import os
rasterfolder = "/home/serg/a"
obj = os.walk(rasterfolder)[::2]


obj = os.walk(rasterfolder)
TypeError: ‘generator’ object has no attribute ‘__getitem__’

но идею я понял спасибо

Отредактировано vrabey (Апрель 14, 2014 21:09:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version