书籍
- full-speed-python
- python-patterns A collection of design patterns/idioms in Python使用Python注意的涉及模式。
python导入
测试代码尽量在上层目录中
How to fix “Attempted relative import in non-package” even with init.py
How to fix “Attempted relative import in non-package” even with init.py
feed更新
使用feedparser解析feed
import feedparser
feed_url = "http://export.arxiv.org/rss/cs.CV"
feed_class = feedparser.parse(feed_url)
print feed_class['feed']['title']
print len(feed_class['entries'])
entry0 = feed_class['entries'][0]
# print(entry0.summary)
print(entry0.title)
# print(entry0.author)
entry0.keys()
entry0.title
Newsbeuter
Newsbeuter是ubuntu下的一款feed阅读器,下述命令可以定时刷新feed,设置存储路径,阅览的文章可以存储在本地,默认存储路径为~,设置存储路径为~/GitHub/Quick/newsbeuter,首先在命令行中输入:set save-path ~/GitHub/Quick/newsbeuter,然后按下s即可存储文章。
crontab -e
/usr/bin/newsbeuter -x reload
ls ~/.config/newsbeuter/
ls ~/.local/share/newsbeuter
python执行外部脚本文件
Running bash script from within python
import subprocess
subprocess.call("sleep.sh", shell=True)
# 其中存在permission问题,需要设置脚本权限chmod 755 sleep.sh
Permission denied when launch python script via bash
python中HOME目录
在linux或者mac中的~即$HOME目录的获取,在python2.7下使用下述命令。
from os.path import expanduser
HOME_PATH = expanduser('~')
How to get the home directory in Python? [duplicate]
文件移动
dst_dir = os.path.dirname(dst)
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
os.rename(src, dst)
python微分库
由于在神经网络中经常使用梯度下降算法,基本神经网络库都会内部集成微分自动推导:
# sudo pip install autograd
获取操作的python版本
import sys
sys.version_info
# sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
sys.version
# 2.7.6 (default, Oct 26 2016, 20:30:19)
# [GCC 4.8.4]
进度条使用
复制文件
shutil.copyfile(src, dst)
获取求整的整数部分和余数部分
divmod
python字典用法
# defaultdict用来表示默认不存在value,但是插入了key的值
from collections import defaultdict
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
dd['key1'] # key1存在
# 输出'abc'
dd['key2'] # key2不存在,返回默认值
# 输出'N/A'
python图像文件truncated
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
Python PIL “IOError: image file truncated” with big images
拷贝
高阶函数map/reduce
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
>>> def f(x):
... return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
eval的使用
eval将字符串当成有效的表达式来求值并返回计算结果。
在用python处理的输入问题
L=list(eval(raw_input()))
python多行输入
单行输入使用raw_input,多行使用多个raw_input即可。
str1 = raw_input()
str2 = raw_input()
str_count = str1.count(str2.lower()) + str1.count(str2.upper())
print(str_count)
python多组同时输入
# 输入:12\n43\n...
import sys
for line in sys.stdin: # 使用for处理多个输入
print(line)
牛客网python输入
import sys
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
lines = line.split()
print int(lines[0]) + int(lines[1])
except:
pass
sympy
用纯Python编写的计算机代数系统。
SymPy是一个符号计算的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。它完全由Python写成,不依赖于外部库。
SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能。
python抽象类
import abc
class BasePizza(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def get_radius(self):
"""Method that should do something."""
如何在Python中正确使用static、class、abstract方法
rgb2hex
def rgb2hex(r,g,b):
hex = "#{:02x}{:02x}{:02x}".format(r,g,b)
return hex
def hex2rgb(hexcode):
rgb = tuple(map(ord,hexcode[1:].decode('hex')))
return rgb
RGB to Hex Conversion and Hex to RGB Conversion in python
替换某一个值(超过最大值)
np.putmask(a, a >= m, m - 1)
Replacing values greater than a limit in a numpy array
添加椒盐噪声
import skimage
img_src_noise_rgb = skimage.util.random_noise(img_src_rgb, mode='salt')
img_src_noise_rgb = (img_src_noise_rgb * 255).round().astype(np.uint8)
获取文件名
os.path.splitext(os.path.basename(neg_path))[0]
How to get the filename without the extension from a path in Python?
python解析参数
python工程自动生成requirements.txt
默认会使用requirements.txt来记录工程所需要的第三方依赖,这里使用pipreqs自动生成替代手动添加。
pipreqs $PWD
python中gray到rgb
img = np.array([[1, 2], [3, 4]])
stacked_img = np.stack((img,)*3, -1)
print(stacked_img)
convert a grayscale image to a 3-channel image
计算工程代码量
find . -name '*.py' | xargs wc -l
异常处理
try:
...
except e:
...
时序相关工具包
随机生成颜色
import random
def colors(n):
ret = []
r = int(random.random() * 256)
g = int(random.random() * 256)
b = int(random.random() * 256)
step = 256 / n
for i in range(n):
r += step
g += step
b += step
r = int(r) % 256
g = int(g) % 256
b = int(b) % 256
ret.append((r,g,b))
return ret
How do I generate n visually distinct RGB colours in Python?
数据库ORM
path使用
“Path” object conveniently wrapping assorted file/path-related functionality