Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2013 14:15:06

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

Выход из скрипта

import os
import sys
import fnmatch
for filename in os.listdir("C:\\1\\2\\1"):
	if fnmatch.fnmatch(filename, '*raster_reclass*'):
		sys.exit()
	else:
		print filename

По идее если встречается, “raster_reclass” то программа должна завершаться, однако почему-то обрабатывается последний print и выводится все, что не содержит “raster_reclass”

Офлайн

#2 Авг. 29, 2013 14:31:00

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Выход из скрипта

Может fnmatchcase?



Офлайн

#3 Авг. 29, 2013 15:00:08

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

Выход из скрипта

А в логике кода ошибки нет?

Офлайн

#4 Авг. 29, 2013 15:31:01

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

Выход из скрипта

Вот к примеру. По логике должен быть выведен список файлов в которых есть слово “raster”. Однако такого не происходи. В чем ошибка?

import os
import sys
import fnmatch
files = []
for f in os.walk("C:\\1\\2\\1"):
	files.append(f)
	for f in files:
		if ("raster") in f:
			print f

Офлайн

#5 Авг. 29, 2013 15:49:53

wbt
Зарегистрирован: 2013-08-13
Сообщения: 143
Репутация: +  6  -
Профиль   Отправить e-mail  

Выход из скрипта

for f in os.walk("C:\\1\\2\\1"):
	files.append(f)
	for f in files:
		if ("raster") in f:
			print f

ужас. во-первых, дважды используется f. во вторых внутрений for будет исполняться не один раз, а несколько.

for f in os.walk("/tmp/1/2/3"):
	if ("raster") in f:
		print f



Бейсик - не порок, Гвидо - не пророк

Офлайн

#6 Авг. 29, 2013 16:15:50

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

Выход из скрипта

for f in os.walk("C:\\1\\2\\1"):
	files.append(f)
	if ("raster") in f:
		print "---"

У меня оно ничего не выводит %) Тоесть вообще ни единого символа на экран.

Выводит только если добавить:

files.sort()
for f in files:
	print f

Отредактировано Suliman (Авг. 29, 2013 16:23:10)

Офлайн

#7 Авг. 29, 2013 16:53:43

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Выход из скрипта

http://docs.python.org/2/library/os.html
os.walk: Generate the file names in a directory tree by walking the tree either top-down or bottom-up. For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames).

Вам нужно искать имя в

f[1]
для директорий или
f[2]
(для файлов)



Отредактировано masterito (Авг. 29, 2013 16:58:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version