csv文件操作

Categories: Python
with open('./old/zce_l1.csv') as f: f_csv = csv.reader(f) headers = next(f_csv) print(headers) Row = namedtuple('Row', headers) for r in f_csv: row = Row(*r) print(row.

Read More →

装饰器版高速fibonacci

Categories: Python
@functools.lru_cache()此行为关键 import time from functools import wraps import functools def clock(func): @wraps(func) def clocked(*args, **kwargs): start = time.time() result = func(*args, **kwargs) elapsed = time.time() - start name = func.__name__ args_list = [] if args: args_list.append(','.join(repr(arg) for arg in args)) if kwargs: pairs = ['%s=%r' % (k, w) for k, w in sorted(kwargs.items())] args_list.append(','.join(pairs)) args_str = ','.join(args_list) print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, args_str, result)) return result return clocked @functools.

Read More →

Tips

Categories: Python
并不是所有的装饰器都使用了@wraps,因此这里的方案并不全部适用。特别的,内置的装饰器@staticmethod和@classmethod就没有遵循这个约定(它们把原始函数存储在属性func中) dis模块反编译

使用dict实现switch类似功能

Categories: Python
switch_dict = { 'char': lambda x: 'i am char' + x, 'double': lambda x: 'i am double' + x, 'int': lambda x: 'i am int' + x } print(switch_dict['char']('999'))

计算小段代码运行时间

Categories: Python
t1 = timeit.timeit('f = open("Log.log_2018-07-10_04-43.log", encoding="GBK");x = sum([l.count("insert") for l in f]);' 'print(x)', '', number=5) # 第二个参数为运行前环境设置,如import timeit

chromedriver添加代理

Categories: Python
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:1080") driver = webdriver.Chrome(executable_path='/opt/chromedriver', chrome_options=chrome_options) driver.

Read More →