- 1
- 2
- 3
- 4
- 5
- 6
- 7
def parse(file):
if 1==1: #вырвано из другого места, лень пробелы удалять
if file:
try:
doc = ET.parse(file)
except IOError:
return HttpResponse(u'nofile')
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−111
def parse(file):
if 1==1: #вырвано из другого места, лень пробелы удалять
if file:
try:
doc = ET.parse(file)
except IOError:
return HttpResponse(u'nofile')
лол
−118
from os import walk
from time import time
from abc import ABCMeta, abstractmethod
class Reporter(object):
__metaclass__=ABCMeta
@abstractmethod
def report(self, catalogs_cntr, files_ctnr, speed):
""" output catalogs_cntr, files_ctnr, speed to somewhere """
#pass
class ConsoleIndicator(Reporter):
def __init__(self, out_splitter):
self.__out_splitter=out_splitter
def report(self, catalogs_cntr, files_ctnr, speed):
if self.__out_splitter and self.__out_splitter.pipes:
_result = "\rcataloges:" + repr(catalogs_cntr).rjust(8)
_result += "\tfiles:" + repr(files_ctnr).rjust(13)
_result += "\tspeed: %12.3f"%speed + " files/s"
self.__out_splitter.write(_result)
self.__out_splitter.flush()
class CatalogsWalker(object):
""" """
def __init__(self, catalogs, reporter=None):
""" """
self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
self.__reporter = reporter
self.__catalogs = catalogs if hasattr(catalogs, "__iter__") else [catalogs]
def __iter__(self):
self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
self.__start_time=time()
for catalog in self.__catalogs:
print catalog
for p,d,ns in walk(catalog):
_ = d;
self.__catalogs_cntr+=1
for n in ns:
self.__files_cntr+=1
self.__speed=self.__files_cntr/(time()-self.__start_time)
if self.__reporter:
self.__reporter.report(self.__catalogs_cntr, self.__files_cntr, self.__speed)
yield p,n
@property
def reporter(self):
return self.__reporter
@property
def catalog_counter(self):
return self.__catalogs_cntr
@property
def file_counter(self):
return self.__files_cntr
@property
def start_time(self):
return self.__start_time
@property
def speed(self):
return self.__speed
По мотивам http://govnokod.ru/17181 Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.
−121
#!/usr/bin/env python
# encoding: utf-8
import os
import sys
from sets import Set
class OutputSplitter(object):
""" splitter """
def __init__(self, out_splitter):
self.__pipes=None
if isinstance(out_splitter, OutputSplitter):
self.__pipes = Set(out_splitter.pipes)
elif out_splitter:
print out_splitter
if type(out_splitter) == list : #
for pn in out_splitter:
self.add_pipe(pn)
else:
self.add_pipe(out_splitter)
@property
def pipes(self):
return self.__pipes
def add_pipe(self, pn):
if isinstance(pn, basestring):
if pn == 'stderr': x = sys.stderr
elif pn == 'stdout': x = sys.stdout
else:
p = os.path.dirname(pn)
if p and not os.path.exists(p):
os.makedirs(p)
try:
x = open(pn,'w+')
except IOError:
raise
else: x = pn
if hasattr(x, 'write') and hasattr(x, 'flush'):
if self.__pipes is None:
self.__pipes=Set()
self.__pipes.add(x)
def write(self,s):
if self.__pipes:
for p in self.__pipes:
p.write(s)
def flush(self):
if self.__pipes:
for p in self.__pipes:
p.flush()
#def __enter__(self):
# pass
#def __exit__(self, exc_type, exc_value, traceback):
# pass
if __name__ == '__main__':
cout=sys.stdout if True else sys.stderr
o=OutputSplitter(cout)
pass
Испаравленная версия по монивам http://govnokod.ru/17181. Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.
−117
class DictOfLists(defaultdict): # it's possible to use dict instead
def __init__(self, *args, **kwds):
__args=self.__check_args(*args)
self.__check_kwds(**kwds)
defaultdict.__init__(self,(lambda:[]), *__args, **kwds)
# dict.__init__(self, *__args, **kwds)
def __is_valid_item(self,item):
if len(item)==2 and not hasattr(item[0],"__iter__") and hasattr(item[1],"__iter__"):
return True
return False
def __check_args(self,*args):
if len(args)>1:
if type(args) == tuple and self.__is_valid_item(args):
return [args,] # tuple of key and list of values
else:
raise TypeError("Item of %s must be a tuple of (key,IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
args.__class__.__name__,
repr(args)))
if len(args) != 1: return args
if isinstance(args[0], DictOfLists): return args
if hasattr(args[0],"__iter__"):
if len(args[0]) == 0: return args # empty iterator
items = args[0].items() if type(args[0]) == dict else args[0]
if self.__is_valid_item(items):
return [args,] # tuple of key and list of values
for v in items:
if not (type(v) == tuple and len(v)==2):
raise TypeError("Item of %s must be a tuple of (key, IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
v.__class__.__name__,
v))
if not hasattr(v[1],"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v[1].__class__.__name__,
repr(v[1])))
else: raise TypeError(" %s must be initialized by {},[],() or %s but %s is not"%\
(self.__class__.__name__,
self.__class__.__name__,
args[0].__class__.__name__))
return args
def __check_kwds(self, **kwds):
for v in kwds.itervalues():
if not hasattr(v,"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v.__class__.__name__,
repr(v)))
def walk(self):
for k, v in self.iteritems():
for x in v:
yield k, v, x
raise StopIteration
def __setitem__(self, *args, **kwargs):
self.__check_args(*args)
self.__check_kwds(**kwargs)
return dict.__setitem__(self, *args, **kwargs)
def update(self, *args, **kwds):
_args=self.__check_args(*args)
self.__check_kwds(**kwds)
dict.update(self,*_args, **kwds)
correct = [ {}, [], (), # empty iterable
{'k2':[], 'k22':[]}, # multipe items dict
[('k3',[]),('k32',[])], # array tuples key list val
(('k4',[]),('k42',[])), # tuple of tuples key list val
('k5',[]) # tuple of key list val
]
strange = [('e0','12'), ('e1','123')]
import inspect
def init_tester(dict_class,t_array,cs):
print "\n%s %s %s"%( inspect.currentframe().f_code.co_name, dict_class().__class__.__name__, cs )
for i in t_array:
try:
print repr(i).ljust(26), repr(dict_class(i)).ljust(74),
print ' work '.ljust(8)
except Exception,e:
print "dosn't work ",
print e
continue
print "------------------------------"
if __name__ == '__main__':
init_tester( DictOfLists, correct, "correct")
init_tester( dict, correct, "correct")
init_tester( DictOfLists, strange, "strange")
init_tester( dict, strange, "strange")
Вот такой вот словарь, значениями элементов которого могут быть только списки. В принципе легко его доделать, чтобы знаечениями были все iterable, но не строки. Кроме этого, он внимательнее проверяет агрументы. Например если ему послать ('k5',[]), он воспримет это как: k5 - key, [] - value. Build-in dict например воспринимает ('12','34') как 1 - key, 2 - value, 3 - key, 4 - value. Соответственно если ему послать ('12','345'), он ругнется. Мне показалось, что это немного странное поведение, трактовать 2-х символьные строки, как key-value. Покритикуйте please. В том числе "стиль" и "красоту".
−108
__author__ = 'КотейКККин'
# Комментарий неуместен.
# О странности автора код сам все скажет.
import random
the_number = random.randint(1, 20867248)
print("Поиграем? Я загадал число от 1 до 20867248.")
print("У вас 1 попытка")
guess = int(input("Ваше предположение: "))
if guess != the_number:
print("Лошара, даже число угадать не можешь. И какой ты 'мужик' после этого...?")
else:
print(" O_O ты угадал??? По-любому вангуешь ;)")
Приобрел недавно ноутбук с рук, но чувак не почистил систему. Нашел на просторах его жестка в папках "обучение"...автор действительно имел незаурядное мышление о_О
P.S. Минусы ставьте за код, а не мне))
−108
if True: #зачем.
....
На новом проекте. Радуют и код и комментарии)
−113
def normalize_url(url, preserve_fragment=False):
url = url.strip()
if not re.search(r'^\w+:', url):
url = 'http://' + url.lstrip('/')
if not (url.startswith('http:') or url.startswith('https:')):
return url
url = list(urlparse.urlsplit(url))
if url[0] not in ('http', 'https'):
url[0] = 'http'
url[1] = url[1].lower().encode('idna')
if type(url[2]) == unicode:
try:
url[2] = url[2].encode('ascii')
except UnicodeEncodeError:
pass
url[2] = urllib.unquote(url[2])
if type(url[2]) == unicode:
url[2] = url[2].encode('utf-8')
url[2] = urllib.quote(url[2], '/')
if type(url[3]) == unicode:
try:
url[3] = url[3].encode('ascii')
except UnicodeEncodeError:
pass
cut_params = ('utm_source', 'utm_medium', 'utm_term',
'utm_content', 'utm_campaign',
'yclid', 'gclid', 'ref')
new_qsl = []
for tag in url[3].split('&'):
if '=' in tag:
param, value = tag.split('=', 1)
param = urllib.unquote(param)
value = urllib.unquote(value)
if param in cut_params:
continue
if type(value) == unicode:
value = value.encode('utf-8')
new_tag = "%s=%s" % (urllib.quote(param), urllib.quote(value))
else:
new_tag = urllib.unquote(tag)
if type(new_tag) == unicode:
new_tag = new_tag.encode('utf-8')
new_tag = urllib.quote_plus(new_tag)
new_qsl.append(new_tag)
url[3] = '&'.join(new_qsl)
if not preserve_fragment:
url[4] = ''
return urlparse.urlunsplit(url)
Еще немного магии и хватит на сегодня.
−115
now = timezone.now().astimezone(cur_tz)
today = now.replace(hour=0, minute=0, second=0, microsecond=0)
td1day = datetime.timedelta(days=1)
td7days = datetime.timedelta(days=7)
td14days = datetime.timedelta(days=14)
td30days = datetime.timedelta(days=30)
categories = None
if user is not None:
try:
categories = self.categories.restrict_by_acl(
self.acl.by_user(user, can_enter=True), throw_if_all=True)
except CampaignProductCategory.NoAclRestriction:
categories = None
report3_url = reverse('report3', args=[self.pk])
df = lambda d: d.strftime('%d.%m.%Y')
stats = {'to': now}
stats['in_1d'] = get_count(today, categories)
stats['in_1d_from'] = today
stats['in_1d_url'] = (
report3_url +
'#from_date=%s&to_date=%s' % (df(stats['in_1d_from']),
df(stats['to'])))
stats['in_7d'] = get_count(today-td7days+td1day, categories)
stats['in_7d_from'] = today - td7days + td1day
stats['in_7d_url'] = (
report3_url +
'#from_date=%s&to_date=%s' % (df(stats['in_7d_from']),
df(stats['to'])))
stats['in_14d'] = get_count(today-td14days+td1day, categories)
stats['in_14d_from'] = today - td14days + td1day
stats['in_14d_url'] = (
report3_url +
'#from_date=%s&to_date=%s' % (df(stats['in_14d_from']),
df(stats['to'])))
stats['in_30d'] = get_count(today-td30days+td1day, categories)
stats['in_30d_from'] = today - td30days + td1day
stats['in_30d_url'] = (
report3_url +
'#from_date=%s&to_date=%s' % (df(stats['in_30d_from']),
df(stats['to'])))
Пхп и даты, только питон
−106
>>> quit()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: 'str' object is not callable
>>> quit
'Use Ctrl-D (i.e. EOF) to exit.'
>>> type(quit)
<type 'str'>
>>> type(exit)
<type 'str'>
Первый раз запустил питон 2.4...
−101
self.exclude = list(set(list(self.exclude or []) + ['str1', 'str2']))