Форум сайта python.su
Слушай, я проходил мимо, увидел интересную задачу, притом заметь уже решенную. И набросал своё решение.
Я не утверждал, что мой код идеален, что он работает в любых условиях, что он дописан до конца. Хочешь чтобы твой код развалился?
Убери из 1.txt один любой ip адрес.
Запусти файл из другой директории.
Замени в *.xsh ‘Host=’ на ‘Host =’
Так что, не надо наезжать, вставляя косяки в исходные файлы.
Офлайн
VladimirvТы просто добавляешь требования, которых не было изначально. Что значит “убери адрес”? он сказал, что там точное количество адресов.
Убери из 1.txt один любой ip адрес.
Запусти файл из другой директории.
Name=킘
Z:\test\repuser>repuser2.py
Traceback (most recent call last):
File "Z:\test\repuser\repuser2.py", line 14, in <module>
data=fin.read()
File "C:\Progra~1\Python33\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 27: character maps to <undefined>
Z:\test\repuser>
Отредактировано py.user.next (Апрель 26, 2017 01:32:55)
Офлайн
py.user.nextТы просто смешон.
однако я думаю, что ты даже прикасаться боишься к своему коду, а то он вообще сломается, типа работает - не трогай. Вот и всё, вот твоя программа, с которой ты даже пукнуть боишься лишний раз.
import os f_ctrl='1.txt' dirpath='.' with open(f_ctrl) as fctrl: addresses=list(map(str.strip, fctrl)) username=addresses.pop(0) addresses_iterator = iter(addresses) files=sorted(filter(lambda x:x.endswith('.xsh') and not os.path.isdir(x), os.listdir(dirpath))) for f in files: with open(f) as fin: data=fin.read() new_file=[] host=next(addresses_iterator) for line in data.split('\n'): if any([line.startswith(x) for x in 'Host=,Host ='.split(',')]): new_file.append('Host=%s' % host) elif any([line.startswith(x) for x in 'UserName=,UserName ='.split(',')]): new_file.append('UserName=%s' % username) else: new_file.append(line) with open(f,'w') as fout: fout.write('\n'.join(new_file))
py.user.nextДобавлял эту строку она как и ты идет лесом.
Вот это ещё можешь добавить в файл второй строкой
Name=킘
py.user.nextСлышишь, посмотри в зеркало, эту хрень начал ты, менять правила.
Ты просто добавляешь требования, которых не было изначально. Что значит “убери адрес”? он сказал, что там точное количество адресов.
Отредактировано Vladimirv (Апрель 26, 2017 11:08:41)
Офлайн
VladimirvА у него-то не Linux, вот он выдал трейсбэк . Я ему ещё говорил там третий питон поставить, помнишь? Иначе второй питон со своими багами и недоделками да ещё и с виндой образуют жуткую смесь. Там по отдельности-то лишней лажи писать надо, а он ещё и совместил без какой-то серьёзной необходимости.
Насчет utf-8, у меня linux, соответственно все файлы в этой кодировке.
VladimirvТам может быть и
4. Поставим сверхзадачу: Просмотрев директорию /etc обнаружил, что в *.ini файлах используют присвоение такого вида:
Host = 127.0.0.1
Учтем и это.
Host =
Host =
VladimirvЗдесь ты нарушил Zen, потому что за секунду непонятно, что здесь происходит, а должно быть понятно. Код должен быть ясным.if any([line.startswith(x) for x in 'Host=,Host ='.split(',')]):
>>> line = 'Host =' >>> line.startswith(tuple('Host=,Host ='.split(','))) True >>> line = 'Hostx =' >>> line.startswith(tuple('Host=,Host ='.split(','))) False >>> >>> line = 'Host =' >>> line.startswith(('Host=', 'Host =')) True >>>
VladimirvНе, если бы ты не полез мнение своё продвигать, я бы ничего не говорил. Но это же ты начал про 1.0 и 2.0. Ты ещё и системы версионирования не знаешь, как они устроены обычно. Версия 2.0 делается тогда, когда получается обратная несовместимость с версией 1.x. А ты этого всего не знаешь, просто слышал чотатама, как типа по телевизору “наука 2.0” - ахаха. :D
Слышишь, посмотри в зеркало, эту хрень начал ты, менять правила.
Отредактировано py.user.next (Апрель 27, 2017 01:09:33)
Офлайн
py.user.next c тобой все ясно. Ты зазнайка с гипер мега раздутым эго. Есть только твое мнение и неправильное, есть только твой код и неверный. В твоей голове не может уложится простая мысль: что может быть иное мнение и может быть другой код кроме твоего. Вот доказательство, ты говорил, что я боюсь притронутся к коду и т.д. Я притронулся и что, ты возьмешь свои слова назад? Ясно же, что нет. Ты бы наверно предпочел бы сдохнуть, чем взять их назад.
py.user.nextТы бредишь, надо отделять мух от котлет. Программистом меня делает процесс изучения и написания кода. Также программист это еще и должность. Дальше программистов можно делить на категории по ЯП или на хороших, плохих, начинающих.
То есть ты просто очередной сисадмин, который думает, что сисадминство его автоматически делает неплохим программистом.
py.user.next
ты просто очередной сисадмин
Отредактировано Vladimirv (Апрель 27, 2017 11:01:00)
Офлайн
Vladimirv
Вот доказательство, ты говорил, что я боюсь притронутся к коду и т.д.
VladimirvОно ещё может быть сокетом и именованным каналом, так что вперёд. Ты просто пытаешься сохранить лицо, стоя в луже.files=sorted(filter(lambda x:x.endswith('.xsh') and not os.path.isdir(x), os.listdir(dirpath)))
VladimirvПрограммист - тот, кто программы делает. А чтобы их делать, надо уметь их делать. А ты максимум, что можешь написать, - десять строк какой-то параши. Проблема не в том, что у тебя быдлокод, а в том, что в нём ошибки и из-за тебя постадает человек. Что я тебе про ракету зря писал что ли? Какой-то мудак один поставил неправильно датчик и из-за этого труд других людей пошёл на смарку. А если бы в ней люди живые сидели?
Программистом меня делает процесс изучения и написания кода.
VladimirvЭто ты делишь, потому что не знаешь нихрена, так как на таком уровне новичковом, что вообще ничего не видишь, как рыбка в аквариуме. Они не делятся по языкам, они делятся по программам. Потому что знание языка не делает человека программистом. Так же как знание карандаша и кисточки не делает человека художником. Кто такой художник? Тот, кто знает, что такое карандаш, кисти и краски? Для тебя - да, а для меня - это просто шимпанзе с кистями и красками, и картины я эти смотреть не буду.
Дальше программистов можно делить на категории по ЯП или на хороших, плохих, начинающих.
VladimirvКак оно выпадало на иероглифе, так оно и выпадает. А он нигде не говорил, что там на латинице может быть всё только.
Короче, я внес изменение в код
Отредактировано py.user.next (Апрель 27, 2017 12:03:19)
Офлайн
Прочитай еще раз:
VladimirvТак ты полностью подтвердил моё мнение. Ты не можешь признать простой факт, объективную реальность, что я поменял код и не побоялся, как ты писал. А что там с кодом, вопрос второй. Как после этого с тобой вообще о чем-то говорить?
Вот доказательство, ты говорил, что я боюсь притронутся к коду и т.д. Я притронулся и что, ты возьмешь свои слова назад? Ясно же, что нет. Ты бы наверно предпочел бы сдохнуть, чем взять их назад.
py.user.nextУровень логики и анализа у тебя равен фальши в численном значении. В линукс в консоли regexp часто используется(например grep). Также, я говорил, что изучаю django, с их помощью выбирается какая функция будет отвечать на запрос. И еще, первые парсеры я писал на них, пока не узнал, что есть готовые модули. А не использовал в выложенном здесь коде т.к. просто не считаю, что в этом случае они уместны, по воробьям бить из пушки. А если посмотреть какой ты регексп запилил, ну просто ‘ яблоко с падающим светом ’. Ну просто, ржака. Еще раз, говорю ты зануда. Приплел Zen of Python сюда, и где тогда соблюдение принципа: ‘ Простое лучше, чем сложное. ’ Еще докопайся, что код не пепнутый.
Я так понял, что ты даже регулярки не знаешь.
py.user.nextИ что ты докопался до этой ракеты? Это ты, что ли тот кто накосячил и мучает совесть? Или ты можешь сделать лучше? И вообще, мудак, не тот кто поставил а разработчик, т.к. это человеческий фактор. Отменить его нельзя. Можешь отменить? Пойди займи место!!! Как проблему решили эту? Что наняли нового сборщика? Нет, сделали невозможным установить тот датчик косячным образом. Да и разработчик, тоже всего учесть не сможет, такова реальность.
Какой-то мудак один поставил неправильно датчик
Отредактировано Vladimirv (Апрель 27, 2017 17:26:30)
Офлайн
VladimirvТы не умеешь присваивать, иначе бы так не пропёрся. Тут даже речь не о том, что этот код слишком короткий, а о том, что ты не знаешь принципов, которые требуются тогда, когда у тебя программа уже дошла до уровня разных версий. У тебя пока что все “программы” одной и той же версии. Кстати, как ты её назовёшь 0.0.1, 0.1.0 или 1.0.0 ? Вот потому я и говорю, что твои версии на уровне “науки 2.0”, они других версий не знают, юзерское понимание.
ты что думаешь я на форуме буду реально присваивать коду версии?
VladimirvХа-ха-ха, должность в трудовую тебе пишут кадровички, для них и кобыла - невеста. Программист - тот, кто написал программу, через которую ты, например, читаешь Интернет. А что про него где записано - это совершенно не важно. Потому что тысяча слов не стоит одной программы.
Также программист это еще и должность.
VladimirvТам несколько видов регекспов. Если ты их знаешь, то почему не применил его при отборе имени? Потому и не применил, предпочёл длинную, корявую фигню написать, причём в таком стиле, в котором никто не пишет никогда.
В линукс в консоли regexp часто используется(например grep).
VladimirvПарсеры писал, хаха, что в твоём понимании парсер? Да, когда-то я был молодым и наивным и писал парсеры, только это были не парсеры.
И еще, первые парсеры я писал на них
VladimirvУ тебя несоблюдение большинства базовых принципов про вложенность кода и тому подобное. Ты пытаешься в одну строку загнать побольше кода, чтобы типа умным показаться, как обычно сисадмины и делают, не понимая, что это только ухудшает читаемость. Они не знают, что код пишется один раз, а читается потом сотни раз. Поэтому читаемость важнее оптимальности и уж тем более псевдооптимальности.
Приплел Zen of Python сюда, и где тогда соблюдение принципа: ‘ Простое лучше, чем сложное. ’ Еще докопайся, что код не пепнутый.
VladimirvДа ты не знаешь нихрена на начальном уровне, что докапываться до следующего этапа тогда? Пепы идут после Дзена.
Еще докопайся, что код не пепнутый.
VladimirvВсегда выкладывали и всегда им говорили, чтобы выкладывали. Такой уж принцип - написанный код лучше рассказанного. Но ты же новичок, который ещё и выёживается, думаешь, что знаешь что-то. Поэтому мне приходится даже твой быдлокод читать, чтобы найти элементарные баги, которые ты сам и заложил.
Ты являешься пугалом на этом сайте, прочитав эту тему, новички 10 раз подумают прежде чем выложить свой код.
VladimirvБыдлокодер - этот тот, кто пишет быдлокод. А быдлокод - это код с нарушениями элементарных правил (типа когда пишут 2 * 2 = 5) по незнанию. Пишешь быдлокод всё время - значит, быдлокодер. А есть ещё говнокод - это код с нарушением всяких правил общепринятых, но не по незнанию, а типа по умности (из-за комплексов или из-за халтуры или из-за лени). Это вот, например, когда код пишут в одну строку, из-за чего он становится малопонятным, но делают это, чтобы показать, что могут короткий код написать. Говнокодерство встречается на любых уровнях развития. Быдлокодерство бывает на начальном уровне. Вот у тебя сейчас пока что быдлокодерство, потому что ты не знаешь ничего. А не знаешь, потому что пришёл в программирование из сисадминства, а у сисадминов нарушение такое есть “если я хорошо сисадминю, то значит я и программировать могу”. Это как человек, который управлял пароходом двадцать лет, садится за руль машины и считает себя автогонщиком каким-то более-менее.
Кстати, мне интересно как ты назовешь начинающего программиста? Сразу быдлокодер?
Отредактировано py.user.next (Апрель 28, 2017 01:05:28)
Офлайн
Вообще, мил человек, я сомневаюсь, что ты программист. Вот будь добр, ответь на вопросы:
Какие ЯП знаешь?
Какая у тебя должность?
В каком направлении работает твоя контора?
В каких разработках, проектах ты принимал участие?
Сколько программистов было в команде?
Над каким проектом работаешь сейчас?
В каких опен проектах участвовал?
Какие модули использовались при разработке?
Дай ссылку на твой код на гитхабе.
Подтверди свою заявленную квалификацию!!!
А то чушь нести ты горазд.
Офлайн
Кстати, выполни тестовое задание, с той же целью:
Подтверди свою заявленную квалификацию!!!
Вот строчки кода:
f_ctrl='1.txt' with open(f_ctrl) as fctrl: addresses=
# комментарий: введите UserName
chen
# ip которые будут использованы:
# стабильные
35.189.01.1
35.189.01.2
# новые рабочие
35.189.01.3
35.189.01.4
# для тестирования
35.189.01.5
…
35.189.01.18
Отредактировано Vladimirv (Апрель 28, 2017 16:10:05)
Офлайн