os

  1. os.linesep
  1. '\r\n'

subprocess

  1. sp.run(f'which conda',shell=True,capture_output=True)

configparser

ini文件

self.working_directory = os.path.abspath(‘’)
cf = configparser.ConfigParser()
cf.read(pbs_config)
self.items = cf.items(“PBS_template”)

日期 & 时间 datatime time

  1. import time
  2. import datetime
  1. now = time.time()
  2. now
  3. localtime = time.localtime(now)
  4. localtime
  1. 1607146324.9261053
  2. time.struct_time(tm_year=2020, tm_mon=12, tm_mday=5, tm_hour=13, tm_min=32, tm_sec=4, tm_wday=5, tm_yday=340, tm_isdst=0)
  1. time.strftime("%a %b %d %H:%M:%S %y",localtime)
  2. time.strftime('%#m/%d/%Y %#I:%M%p',localtime)
  1. 'Sat Dec 05 13:32:04 20'
  2. '12/05/2020 1:32PM'
  1. time.strftime('%Y/%m/%d %H:%M:%S',time.localtime())
  1. '2020/12/05 13:32:49'

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
%#(windows)/%-(linux) 删除%m,%d等前面的空0

  1. day = time.strptime('2020-08-13','%Y-%m-%d')
  2. day
  3. time.strftime("%a %b %d %H:%M:%S %y",day)
  1. time.struct_time(tm_year=2020, tm_mon=8, tm_mday=13, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=-1)
  2. 'Thu Aug 13 00:00:00 20'
  1. datetime.datetime.now()
  2. datetime.datetime.today()
  3. now = datetime.datetime.now()
  4. now.year,now.month,now.day,now.hour,now.minute,now.second
  5. now.date(),now.time()
  6. now + datetime.timedelta(days=1)
  1. datetime.datetime(2020, 11, 22, 19, 19, 5, 495930)
  2. datetime.datetime(2020, 11, 22, 19, 19, 5, 506972)
  3. (2020, 11, 22, 19, 19, 5)
  4. (datetime.date(2020, 11, 22), datetime.time(19, 19, 5, 519924))
  5. datetime.datetime(2020, 11, 23, 19, 19, 5, 519924)

正则表达式 re

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则很有用,此处用python讲解一下正则的用法
学习正则的一个网站 https://regexr.com/ 只不过是英文而且正则的写法是基于js的。

  1. import re
  1. a = "我的邮箱是yangjingkang@126.com"
  2. groups = re.search(r'([a-zA-Z0-9_]*)@(\w*?\.com)', a)
  3. groups
  4. groups.group(0)
  5. groups.group(1)
  6. groups.group(2)
  1. <_sre.SRE_Match object; span=(5, 25), match='yangjingkang@126.com'>
  2. 'yangjingkang@126.com'
  3. 'yangjingkang'
  4. '126.com'
  1. a = '我的好孩子'
  2. re.search(r'\w*', a)
  1. <_sre.SRE_Match object; span=(0, 5), match='我的好孩子'>
  1. re.sub('^ERCC(?!-)','ERCC-',i) # negative lookahead
  2. [i for i in df.columns if i.startswith('ERCC') and not i.startswith('ERCC-')]
  3. import re
  4. a = 'echo ${path_to_gatk}'
  5. re.sub(r'echo \$\{path_to_([a-zA-Z]+)\}',r'${path_to_\1}',a)

爬虫 requests

  1. import requests
  2. s = requests.session()
  3. cookies = {'s':1000}
  4. s.cookies = requests.utils.cookiejar_from_dict(cookies)
  1. https://blog.csdn.net/g28757/article/details/109363717 selenium配置Edge 全屏 更改ua

多进程 multiprocessing

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import multiprocessing as mp
  4. import random
  5. def do_some_thing(results1):
  6. results1.append(random.randint(1,10))
  7. manager = mp.Manager()
  8. pool = mp.Pool()
  9. results = manager.list()
  10. for peaks in range(10):
  11. pool.apply_async(do_some_thing, args=(results))
  12. pool.close()
  13. pool.join()
  14. print(split_read_mates)

高效循环 itertools

无限迭代器
count(firstval=0, step=1) 创建一个从 firstval (默认值为 0) 开始,以 step (默认值为 1) 为步长的的无限整数迭代器

cycle(iterable) 对 iterable 中的元素反复执行循环,返回迭代器

repeat(object ,times 反复生成 object,如果给定 times,则重复次数为 times,否则为无限

有限迭代器

chain() compress() dropwhile() groupby() ifilter() ifilterfalse() islice() imap() starmap() tee() takewhile() izip() izip_longest()

  1. import itertools
  2. itertools.combinations([1,2,3],2)
  3. list(itertools.combinations([1,2,3],2))
  4. list(itertools.combinations_with_replacement([1,2,3],2))
  5. list(itertools.permutations([1,2,3]))
  6. list(itertools.product([1,2,3],[1,2]))
  7. list(itertools.product([1,2,3],[1,2]))
  8. list(itertools.chain([1,2,3],[3,4,5],[4,5,6]))
  9. list(itertools.zip_longest([1,2,3],[1,2]))
  1. <itertools.combinations at 0x18d4a4adc78>
  2. [(1, 2), (1, 3), (2, 3)]
  3. [(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]
  4. [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
  5. [(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]
  6. [(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]
  7. [1, 2, 3, 3, 4, 5, 4, 5, 6]
  8. [(1, 1), (2, 2), (3, None)]
  1. from itertools import groupby
  2. d1={'name':'zhangsan','age':20,'country':'China'}
  3. d2={'name':'wangwu','age':19,'country':'USA'}
  4. d3={'name':'lisi','age':22,'country':'JP'}
  5. d4={'name':'zhaoliu','age':22,'country':'USA'}
  6. d5={'name':'pengqi','age':22,'country':'USA'}
  7. d6={'name':'lijiu','age':22,'country':'China'}
  8. lst=[d1,d2,d3,d4,d5,d6]
  9. lst.sort(key=lambda x:x['country']) #需要先排序,然后才能groupby。
  10. lstg = groupby(lst,key=lambda x:x['country'])
  11. #lstg = groupby(lst,key=lambda x:x['country']) 等同于使用itemgetter()
  12. for key,group in lstg:
  13. for g in group: #group是一个迭代器,包含了所有的分组列表
  14. print(key,g)
  1. China {'name': 'zhangsan', 'age': 20, 'country': 'China'}
  2. China {'name': 'lijiu', 'age': 22, 'country': 'China'}
  3. JP {'name': 'lisi', 'age': 22, 'country': 'JP'}
  4. USA {'name': 'wangwu', 'age': 19, 'country': 'USA'}
  5. USA {'name': 'zhaoliu', 'age': 22, 'country': 'USA'}
  6. USA {'name': 'pengqi', 'age': 22, 'country': 'USA'}

操作符 operator

  1. import operator
  2. a = operator.itemgetter(0)
  3. a([1,2,3])
  4. a = lambda x:x[0]
  5. a([1,2,3])
  1. 1
  2. 1

parse库

subprocess

https://zhuanlan.zhihu.com/p/140555017