10 Dunder Methods

dunder methods #!/usr/bin/env python3 # -*- coding: utf-8 -*- # double underscore variable/function # dunder class A(object): def __init__(self, number): self.number = number def __eq__(self, value): ''' a == b ''' return super().__eq__(value) def __ge__(self, value): ''' a >= b ''' return super().__ge__(value) def __gt__(self, value): ''' a > b ''' return super().__gt__(value) def __le__(self, value): ''' a < b ''' return super().__le__(value) def __ne__(self, value): ''' a != b ''' return super().__ne__(value) def __str__(self): '''print(a) ''' return super().__str__() def __repr__(self): return super().__repr__() def __len__(self): ''' len(a) ''' return self.number * 10 def __lt__(self, other): '''less than a < b ''' return self.number < other.number def __getattribute__(self, name): ''' print(a[the_key]) ''' return super().__getattribute__(name) def __setattr__(self, name, value): ''' a[the_key] = 5 ''' return super().__setattr__(name, value) def __delattr__(self, name): ''' delete a['the_key'] ''' return super().__delattr__(name) if __name__ == '__main__': ''' ''' # a = A(5) # b = A(6) # print(a < b) # print(len(a)) # a['b'] = 10 # c = a['c'] pass ……

Continue reading

Darknet Too Many or Too Few Labels

Too many or too few labels 如果在使用darknet过程中,遇到这个错误,很可能你的labels文件里面的label定义的有问题 label之间要不包含 label 名字不要出现在train/test的路径中 所以如果定义一个label是a, 很可能就不行,train里面包含a,所以还是定义的稍微长点。……

Continue reading

09 Python Decorators

无参装饰器 #1. decorator without arguments def log_time_always(func): @wraps(func) def wrapped(*args, **kwargs): #1. get current time t1 = datetime.now() #2. run the function func(*args, **kwargs) #3. get current time t2 = datetime.now() print(f'in {func.__name__}, it took {t2-t1}') return wrapped 带参数的装饰器 #2. decorator with arguments, flag is True or False def log_time(flag): def wrapper(func): @wraps(func) def wrapped(*args, **kwargs): # if flag is true, we need to log the time if flag: #1. get current time t1 = datetime.now() #2. run the function func(*args, **kwargs) #3. get current time t2 = datetime.now() print(f'in {func.__name__}, it took {t2-t1}') else: func(*args, **kwargs) return wrapped return wrapper 本质 装饰器需要能够处理一个函数 无参 @decorator_1 def f(): pass 等同于 def f(): pass f =……

Continue reading

08 Python Virtual Environment

Details refer to offical document Virtual environment To create new virtual environment usually in folder venv python -m venv yourfoldername enter virtual environment source venv/bin/activate exit virtual environment deactivate Pip usage install package pip install packagename list installed packages pip list save installed packages to requirements.txt pip freeze > requirements.txt install packages from requirements.txt pip install -r requirements.txt ……

Continue reading

07 Python 函数

函数 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # def func, snake case # return value # no args, no return def add_two_number(): print('a') # 1 arg def add_two_number_1(x): return x + 5 # return value # return multiple value def two_number_2(x, y): c = x + y d = x - y return c, d # args def add_number(x, y, *args): print(f'x = {x}') print(f'y = {y}') print(f'args = {args} ') # kwargs # def add_number_1(x, y, *args, **kwargs): print(f'x = {x}') print(f'y = {y}') # f-string f'this is string, {x}' print(f'args = {args} ') print(f'kwargs = {kwargs} ') # wrong # def add_number_2(**kwargs, *args, x, y) # pass # default def add_number_3(x, y, c=10, d = True): print(c) if __name__ == '__main__': # add_two_number() # print(add_two_number_1(6)) # print(two_number_2(10, 5)) # add_number(1,2, 3, 4, 5, 6) # add_number_1(1,2,3,4,5,……

Continue reading

06 Python 控制,循环

条件控制 #!/usr/bin/env python3 # -*- coding: utf-8 -*- if __name__ == '__main__': a = 5 if a > 0: print('a > 0') else: print('a < 0') if a > 0: pass elif a < 5: pass elif a < 10: pass else: pass if a > 0: if a < 5: print(a) else: print('a > 5') 循环控制 #!/usr/bin/env python3 # -*- coding: utf-8 -*- if __name__ == '__main__': # while condition a = 5 while a > 0: # print(a) a = a -1 # for in for i in range(10): print(i) # break the loop print('------------------') for i in range(10): print(i) else: # print('done') # continue the loop print('------------------') for i in range(10): if i == 5: continue print(i) count = 0 while count < 5: print (count, " 小于 5") count……

Continue reading

Golang 导出 csv 乱码的问题

问题提出 golang最近导出csv的时候,如果用excel打开,会有乱码。在网上查到了解决方案,记录一下。 解决方案 f, err := os.Create("data.csv") if err != nil { panic(err) } defer f.Close() f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM,避免使用Microsoft Excel打开乱码 writer := csv.NewWriter(f) writer.Write([]string{"col 1", "col 2", "col 3"}) writer.Flush()……

Continue reading

转换Pdf成图片

背景 在做文字检测和文字识别的时候,有时候客户提供的是pdf格式的文件,而不是jpg/png格式,这时候就需要把pdf里面多个页面 保存成图片。 代码库pdf2image 实现 Python 参考readme docker 参考readme golang 参考readme 也可以 直接下载可执行文件直接执行 -> https://github.com/jerrywang1981/pdf2images/blob/master/pdf2image……

Continue reading