MYSQL

检索

SELECT * FROM 表名

SELECT 列名,列名 FROM 表名

SELECT DISTINCT 列名 FROM 表名

Read More

Linux性能

psdash 是一款查看 Linux 系统信息的 web 面板,和我们以前提到的另一款系统监控工具 Glances 一样,psDash 的系统信息的采集也是由 psutil 完成的。和 Glances 不同的是,psdash 没有提供 API,只带了一个基于 Flask 的 web 界面,默认每3秒刷新一次数据和界面。

Read More

WEB设计模式

推荐 https://zhuanlan.zhihu.com/p/22834622

前言

在想弄懂这些名词的过程中,看了很多文章,觉得在将MVC时,应该先注意到:

Read More

API集成

使用 requests 访问 Web APIs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2

gh_url = 'https://api.github.com'

req = urllib2.Request(gh_url)

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, gh_url, 'user', 'pass')

auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)

urllib2.install_opener(opener)

handler = urllib2.urlopen(req)

print handler.getcode()
print handler.headers.getheader('content-type')

# ------
# 200
# 'application/json'

Read More

Python实践

最佳实践文档
https://gist.github.com/sloria/7001839
https://gist.github.com/JeffPaine/6213790

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
1.如何使用PIP更新package?

python -m pip install --upgrade package_name




2.如何判断文件是否存在?

import os.path

os.path.isfile(filename)




3.Python中的三元运算符

a if test else b

根据test为True,则返回a,若为False,则返回b




4.如何在一个表达式里合并两个字典?

>>> x = {'a':1, 'b': 2}

>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())

>>> z

{'a': 1, 'c': 11, 'b': 10}




5.如何用字典的值对字典进行排序?

import operator

x ={1: 2, 3: 4, 4:3, 2:1, 0:0}

sorted_x = sorted(x.items(),key = operator.itemgetter(1)) 或者

sorted(d.items(), key=lambda x: x[1])




6.如何在一个函数里用全局变量?

如果我在一个函数里建了一个全局变量,那么我怎么在另一个函数里使用这个全局变量?

我需要把这个全局变量赋值给这个函数的局部变量吗?

如果你要在别的函数里使用全局变量,只要在被调用全局变量函数的里事先用global声明一下:

globvar = 0

def set_globvar_to_one():

global globvar # 需要用global修饰一下globvar

globvar = 1

def print_globvar():

print globvar # 如果要读globbar的值的话不需要用global修饰

set_globvar_to_one()

print_globvar() # 输出 1

我猜正是因为全局变量比较危险,所以Python为了确保你真的知道它是全局变量,所以需要加一个global关键字.




7.检查列表是否为空的最好方法?

if not a:

print "List is empty"

用隐藏的空列表的布尔值才是最Pythonic的方法.




8.__str__和repr__的区别?


- 用起来没有什么区别

- __repr__的目的是明确的

- __str__的目的是可读性

- __str__的用法包含__repr__

a='a\nb'
In [2]:

print str(a)
a
b
In [3]:

print repr(a)
'a\nb'




9.在循环中获取索引(数组下标)?

list_test = [8, 23, 45, 12, 78]

for index, value in enumerate(list_test):

print index , value




10.Python中的append和extend的区别?

In[7]: x = [1,2,3,4]

In[8]: y = [8,9,10]

In[9]: x.append(y)

In[10]: x

Out[10]: [1, 2, 3, 4, [8, 9, 10]]

In[11]: x = [1,2,3,4]

In[12]: y = [8,9,10]

In[13]: x.extend(y)

In[14]: x

Out[14]: [1, 2, 3, 4, 8, 9, 10]




10.字典里添加元素的方法?

In[15]: x = {1:2,3:4}

In[16]: x.update({5:6})

In[17]: x

Out[17]: {1: 2, 3: 4, 5: 6}




11.Python中有检查字符串包含的方法吗?

if not "haha" in sstring: continue

或者:

if "haha" not in somestring : continue




12.如何在只用一行捕获多个异常?

try:

something

except(ExceptionA,ExceptionB,.....) as e:

something




13.在Python里怎么读取stdin?

import fileinput

for line in fileinput.input():

pass




14.在Python里获取当前时间?

In[19]: import datetime

In[20]: datetime.datetime.now()

Out[20]: datetime.datetime(2016, 5, 26, 11, 31, 55, 508000)

In[21]: datetime.datetime.now().time()

Out[21]: datetime.time(11, 32, 5, 775000)




15.在Python怎么样才能把列表分割成同样大小的块?

tuple(l[i:i+n] for i in xrange(0, len(l), n))




16.检查一个字符串是否是一个数字?

In[22]: x = '569789'

In[23]: x.isdigit()

Out[23]: True

In[24]: y = 'gdf2667'

In[25]: y.isdigit()

Out[25]: False




17.查找列表中某个元素的下标?

In[26]: ['a','b','c'].index('b')

Out[26]: 1




18.如何在列表中随机取一个元素?

import random

f= ['a', 'b', 'c']

print(random.choice(f))




19.字典推倒式

d = {key: value for (key, value) in iterable}




20.如何最快速反转字符串?

In[30]: 'nihao ma'[::-1]

Out[30]: 'am oahin'




20.如何测量脚本的运行时间?

Python自带了一个叫cProfile的分析器.它不仅实现了计算整个时间,而且单独计算每个函数运行时间,并且告诉你这个函数被调用多少次,它可以很容易的确定你要优化的值.

你可以这样调用:

import cProfile

cProfile.run('foo()')

In[37]: import cProfile

In[38]: cProfile.run('fm()')

4950

3 function calls in 0.000 seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.000 0.000 0.000 0.000 :1(fm)

1 0.000 0.000 0.000 0.000 :1()

1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}




21.Python中用什么代替switch语句?

在其他语言中有switch语句,但是python中没有。可以用字典的方式来解决这个问题。

def helpFunction(x):

return {

'a':12,

'b':45,

'c':78

}[x]

if __name__=='__main__':

print helpFunction('b')

如果你希望设置一个默认值可以用字典的get方法:

def f(x):

return {

'a': 1,

'b': 2,

}.get(x, 9)




22.如何生成包含大写字母和数字的随机字符串?

In[40]: import random

In[41]: import string

In[42]: ''.join(random.choice(string.ascii_uppercase+string.digits) for _ in range(5))

Out[42]: 'XBNH7'




23.如何合并两个列表?

list1 = [1,2,3,4]

list2 = [5,6,7,8]

list3 = list1+list2




24.如何把字符串转化为时间?

from datetime import datetime

date_object = datetime.strptime('Jun 1 2016 1:33PM', '%b %d %Y %I:%M%p')

Out[45]: datetime.datetime(2016, 6, 1, 13, 33)




25.如何用pip升级所有包?

pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -U




26.如何给字符串填充0?

A = 'demo'

A.rjust(5,'0')

'0demo'

Read More

CSS选择器详解



  大概大家都知道id,class以及descendant选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式。这篇文章里面提到的大部分选择器都是在CSS3标准下的,所以它们只能在相应最新版本的浏览器中才能生效,你完全应该把这些都记在你聪明的脑袋里面。




 1.


 {
margin: 0;
padding: 0;
}


  在我们看比较高级的选择器之前,应该认识下这个众所周知的清空选择器。星号呢会将页面上所有每一个元素都选到。许多开发者都用它来清空margin和padding。当然你在练习的时候使用这个没问题,但是我不建议在生产环境中使用它。它会给浏览器凭添许多不必要的东西。

也可以用来选择某元素的所有子元素。


#container  {
border: 1px solid black;
}


  它会选中#container下的所有元素。当然,我还是不建议你去使用它,如果可能的话。



  DEMO



  兼容性




  • IE6+


  • Firefox


  • Chrome


  • Safari


  • Opera



 2. #X


#container {
width: 960px;
margin: auto;
}


  在选择器中使用#可以用id来定位某个元素。大家通常都会这么使用,然后使用的时候大家还是得相当小心的。

需要问自己一下:我是不是必须要给这个元素来赋值个id来定位它呢?


Read More

爬虫代码段

爬去图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
import urllib
print 'Please enter a URL like http://www.py4inf.com/cover.jpg'
urlstr = raw_input().strip()
img = urllib.urlopen(urlstr)
# Get the last "word"
words = urlstr.split('/')
fname = words[-1]
# Don't overwrite the file
if os.path.exists(fname) :
if raw_input('Replace '+fname+' (Y/n)?') != 'Y' :
print 'Data not copied'
exit()
print 'Replacing',fname
fhand = open(fname, 'w')
size = 0
while True:
info = img.read(100000)
if len(info) < 1 : break
size = size + len(info)
fhand.write(info)
print size,'characters copied to',fname
fhand.close()

Read More

数据表示方法之Json和Xml

Web Service的行业发展趋势是从XML转向JSON。由于JSON足够简单,能够直接映射到编程语言已有的原生数据结构,JSON的使用让解析与数据抽取变得更简单。但是,XML比JSON在自我描述方面更强,因此在某些应用程序中XML仍然有一定优势。

XML节点循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import xml.etree.ElementTree as ET
input = "'
<stuff>
<users>
<user x="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>"'
stuff = ET.fromstring(input)
lst = stuff.findall('users/user')
print 'User count:', len(lst)
for item in lst:
print 'Name', item.find('name').text
print 'Id', item.find('id').text
print 'Attribute', item.get('x')

Read More

Xpath

介绍

Xpath是一门语言,专门用于解析xml和html
Xpath相比于正则表达式更简易好,正则表达式是告诉计算机寻找特定样子的字符串,而xpath
是直接告诉计算机寻找某个节点

Read More

数据搜索和筛选之正则表达式

正则表达式

正则表达式库在使用之前必须先导入到程序中。正则表达式库最简单的用法是search()函数。搜索函数的简单用法如下程序所示:

1
2
3
4
5
6
import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('From:', line) :
print line

打开文件,循环每一行,使用正则表达式的search()函数,打印出包含字符串”From:”的文本行。这个程序其实并没有发挥正则表达式的真正实力,line.find()函数可以更容易地实现相同的结果。

正则表达式的强大之处体现于,可以在搜索字符串中添加特定字符,以实现更精确的字符串文本行的匹配控制。通过在正则表达式中添加特定字符,编写很少代码就可以实现复杂的匹配与抽取。

例如,正则表达式的^符号匹配一行的开始。我们修改一下上面的程序,仅匹配“From:”开头的文本行。

1
2
3
4
5
6
import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('^From:', line) :
print line

好了,这就做到仅匹配“From:”开头的文本行。这仍然是一个非常简单的例子,字符串库的startswith()函数同样可以实现。之所以这样讲解,目的是介绍正则表达式的理念,包含特定行动字符,给予文本匹配更多的控制。<

Read More