Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 24, 2011 15:23:10

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

Я обхожу файл и при встрече прекращаю обработку.
но в итоге получается не то =)
весь файл записывается и его содержимое в 2 раза больше чем было =)
Как такое может быть, помогите.

par1 = '<name>online_users</name>'
config = open('ideal/config.xml')
_config = config
part1 = open('part1', 'a')
for config in _config:
if config == par1:
break
else:
print >> part1, (config)
part1.close()

Отредактировано (Дек. 25, 2011 19:37:08)

Офлайн

#2 Дек. 24, 2011 15:34:25

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

Обход файла

hint: xml это такой формат, и есть библиотеки для работы с ним.

Офлайн

#3 Дек. 24, 2011 15:40:27

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

а можно по конкретнее или пример там какой-нить.
Я все таки новичек.

Офлайн

#4 Дек. 24, 2011 15:50:08

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

Обход файла

Ну например:
http://lxml.de/tutorial.html

Офлайн

#5 Дек. 24, 2011 16:12:27

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

неужели нельзя сделать так, чтобы for просто остановился если встретит нужную строку?

Офлайн

#6 Дек. 24, 2011 16:17:06

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

А если у меня просто файл, не xml, как сделать обход его элементов и при обнаружении строки завершить процесс?
Оч интересно

Офлайн

#7 Дек. 24, 2011 16:25:18

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

Обход файла

xxnikolayxx
неужели нельзя сделать так, чтобы for просто остановился если встретит нужную строку?
Можно, но для этого нужно знать в какой кодировке срока + если уж мы говорим о xml то строка пожет начинаться с пробелов.

xxnikolayxx
А если у меня просто файл, не xml, как сделать обход его элементов и при обнаружении строки завершить процесс?
with open('some_file') as fd:
for line in fd:
if line.strip() == 'somestring':
break

Офлайн

#8 Дек. 24, 2011 16:30:38

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

Попробую тогда разобраться с библиотекой.

>>> root = etree.Element("/home/nikola/wingwork/wingwork0.3/ideal/config.xml")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
root = etree.Element("/home/nikola/wingwork/wingwork0.3/ideal/config.xml")
File "lxml.etree.pyx", line 2568, in lxml.etree.Element (src/lxml/lxml.etree.c:52878)
File "apihelpers.pxi", line 126, in lxml.etree._makeElement (src/lxml/lxml.etree.c:11497)
File "apihelpers.pxi", line 1542, in lxml.etree._tagValidOrRaise (src/lxml/lxml.etree.c:23956)
ValueError: Invalid tag name u'/home/nikola/wingwork/wingwork0.3/ideal/config.xml'
>>>
Беда.

Отредактировано (Дек. 25, 2011 19:37:36)

Офлайн

#9 Дек. 24, 2011 16:39:36

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

Обход файла

xxnikolayxx
etree.Element
Вы берете элемент из ниоткуда.

Сначала нужно открыть файл.
tree = etree.parse("test.xml")

Офлайн

#10 Дек. 24, 2011 16:52:50

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Обход файла

Все запустилось, теперь мне нужно погрузить все в файл из конфига, до определенной строки.
и как же это реализуется?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version